asp.net-mvc – 查看模型IEnumerable <>属性返回null(不绑
发布时间:2020-12-15 22:22:18 所属栏目:asp.Net 来源:网络整理
导读:我有一个视图模型,它包含一个产品类类型和一个IEnumerable产品类型.在发布后,第一级产品对象从视图模型返回绑定,而产品枚举将返回null. 为什么IEnumerable选取产品属性没有被绑定到我的视图模型的每个帖子?谢谢! 楷模: public class Product{ public int
我有一个视图模型,它包含一个产品类类型和一个IEnumerable&产品>类型.在发布后,第一级产品对象从视图模型返回绑定,而产品枚举将返回null.
为什么IEnumerable<选取产品>属性没有被绑定到我的视图模型的每个帖子?谢谢! 楷模: public class Product { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } public class ProductIndexViewModel { public Product NewProduct { get; set; } public IEnumerable<Product> Products { get; set; } } public class BoringStoreContext { public BoringStoreContext() { Products = new List<Product>(); Products.Add(new Product() { ID = 1,Name = "Sure",Price = (decimal)(1.10) }); Products.Add(new Product() { ID = 2,Name = "Sure2",Price = (decimal)(2.10) }); } public List<Product> Products {get; set;} } 视图: @model ProductIndexViewModel @using (@Html.BeginForm()) { <div> @Html.LabelFor(model => model.NewProduct.Name) @Html.EditorFor(model => model.NewProduct.Name) </div> <div> @Html.LabelFor(model => model.NewProduct.Price) @Html.EditorFor(model => model.NewProduct.Price) </div> <div> <input type="submit" value="Add Product" /> </div> foreach (var item in Model.Products) { <div> @Html.LabelFor(model => item.ID) @Html.EditorFor(model => item.ID) </div> <div> @Html.LabelFor(model => item.Name) @Html.EditorFor(model => item.Name) </div> <div> @Html.LabelFor(model => item.Price) @Html.EditorFor(model => item.Price) </div> } } 控制器: public class HomeController : Controller { BoringStoreContext db = new BoringStoreContext(); public ActionResult Index() { ProductIndexViewModel viewModel = new ProductIndexViewModel { NewProduct = new Product(),Products = db.Products }; return View(viewModel); } [HttpPost] public ActionResult Index(ProductIndexViewModel viewModel) { // ???? viewModel.Products is NULL here // ???? viewModel.NewProduct comes back fine return View(); } 解决方法
你没有正确使用你的lambda表达式.您需要通过模型访问“产品”列表.尝试这样做:
@count = 0 foreach (var item in Model.Products) { <div> @Html.LabelFor(model => model.Products[count].ID) @Html.EditorFor(model => model.Products[count].ID) </div> <div> @Html.LabelFor(model => model.Products[count].Name) @Html.EditorFor(model => model.Products[count].Name) </div> <div> @Html.LabelFor(model => model.Products[count].Price) @Html.EditorFor(model => model.Products[count].Price) </div> @count++ } 编辑 控制器: BoringStoreContext db = new BoringStoreContext(); public ActionResult Index() { ProductIndexViewModel viewModel = new ProductIndexViewModel { NewProduct = new Product(),Products = db.Products }; return View(viewModel); } [HttpPost] public ActionResult Index(ProductIndexViewModel viewModel) { // work with view model return View(); } 模型 public class Product { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } public class ProductIndexViewModel { public Product NewProduct { get; set; } public List<Product> Products { get; set; } } public class BoringStoreContext { public BoringStoreContext() { Products = new List<Product>(); Products.Add(new Product() { ID = 1,Price = (decimal)(1.10) }); Products.Add(new Product() { ID = 2,Price = (decimal)(2.10) }); } public List<Product> Products { get; set; } } 视图: @model Models.ProductIndexViewModel @using (@Html.BeginForm()) { <div> @Html.LabelFor(model => model.NewProduct.Name) @Html.EditorFor(model => model.NewProduct.Name) </div> <div> @Html.LabelFor(model => model.NewProduct.Price) @Html.EditorFor(model => model.NewProduct.Price) </div> for (int count = 0; count < Model.Products.Count; count++ ) { <div> @Html.LabelFor(model => model.Products[count].ID) @Html.EditorFor(model => model.Products[count].ID) </div> <div> @Html.LabelFor(model => model.Products[count].Name) @Html.EditorFor(model => model.Products[count].Name) </div> <div> @Html.LabelFor(model => model.Products[count].Price) @Html.EditorFor(model => model.Products[count].Price) </div> } <div> <input type="submit" value="Add Product" /> </div> } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 通过控件循环
- ASP.NET Identity 2是否使用machinekey来密码密码?
- asp.net – 以编程方式将Javascript文件添加到.net中的用户
- asp-classic – 浏览器似乎忽略了响应缓存控制指令
- asp.net – 用JavaScript计算时间间隔
- asp.net – 服务器标签格式不正确,ASP Repeater Datasource
- asp.net – 如何使用jQuery ajax避免快速结果的“闪烁”进度
- asp.net-mvc – jwt令牌多租户
- ASP.NET Core 2.0 带初始参数的中间件问题及解决方法
- Asp.Net MVC EnableClientValidation不起作用