这是主视图代码
@model SportsStore.WebUI.Models.ProductsListViewModel @{ ViewBag.Title = "Products"; } @foreach (var p in Model.Products) { Html.RenderPartial("ProductSummary", p); }
这是分部视图代码
@model SportsStore.Domain.Entities.Product <div class="item"> <h3>@Model.Name</h3> @Model.Description @using (Html.BeginForm("AddToCart", "Cart")) { @Html.HiddenFor(p=>p.Id) @Html.Hidden("returnUrl",Request.Url.PathAndQuery) <input type="submit" value="加入购物车"/> }
</div>
主视图中的P明明有值 但是到了分部视图却读不出 哪里出了问题?之前一直做WINFORM web刚学 求教各位下
建议再确认一下p是否真的明明有值
这是调试的 这个P有值得
@C'est la vie: Html.RenderPartial("ProductSummary", p);的结果是什么?
这个结果怎么看啊
这个是分部视图生成的html代码
<form action="/Cart/AddToCart" method="post"><input data-val="true" data-val-number="字段 Id 必须是一个数字。" data-val-required="Id 字段是必需的。" id="Id" name="Id" type="hidden" value="1" />
@C'est la vie: 值不是传过来了吗?
id="Id" name="Id" type="hidden" value="1"
@dudu: @Html.HiddenFor(p=>p.Id) 那我这么写取不到这个Value值啊,是不是我写的有问题啊
@C'est la vie:
<input data-val="true" data-val-number="字段 Id 必须是一个数字。" data-val-required="Id 字段是必需的。" id="Id" name="Id" type="hidden" value="1" />
就是 @Html.HiddenFor(p=>p.Id) 生成的
@dudu: 额 但是我当我点击加入购物车的时候弹出这个错
public RedirectToRouteResult AddToCart(int productId,string returnUrl) { Product product = repository.Products.FirstOrDefault(p => p.Id == productId); if (product != null) { GetCart().AddItem(product, 1); } return RedirectToAction("Index", new { returnUrl }); }
@C'est la vie: 我解决了 谢谢
建议将鼠标指针指向p,看下类型是否正确SportsStore.Domain.Entities.Product
这个P应该是SportsStore.Domain.Entities.Product
这样的写法,会造成页面有很多相同ID的隐藏域。
啊,我刚学这个 先写个例子 以后注意点
@C'est la vie: :)