asp.net-mvc – 查看模型IEnumerable 属性返回null(不绑定)从post方法?
发布时间:2020-05-24 09:02:45 所属栏目:asp.Net 来源:互联网
导读:我有一个视图模型,它包含一个产品类类型和一个IEnumerable产品类型.在发布后,第一级产品对象从视图模型返回绑定,而产品枚举将返回null. 为什么IEnumerable选取产品属性没有被绑定到我的视图模型的每个帖子?谢谢! 楷模: public class Product{ public int I
|
我有一个视图模型,它包含一个产品类类型和一个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-mvc – 在部分视图中传递参数 – MVC3 / Razor
- asp.net-mvc – ASP.NET MVC JavaScript路由
- ASP.NET MVC,Ninject,每个请求多个构造函数的单个实例
- asp.net – 如何在占位符中的动态生成的标签之间创建换行符
- Asp.net core WebApi 使用Swagger生成帮助页实例
- asp.net-mvc – ASP.NET MVC是否有分页解决方案,在数据库中
- 将链接列添加到ASP.NET GridView
- asp.net – 与web.config中的targetFramework相关的配置错误
- asp.net – 如何绑定gridview中的下拉列表?
- 如何设置asp.net下拉列表的样式
推荐文章
站长推荐
- asp.net – [DataType(DataType.EmailAddress)]和
- asp.net-mvc – 控制器中的模拟服务器
- asp.net – Chrome浏览器不显示HTTP处理程序生成
- asp.net-mvc – 如何在不同的控制器中管理MVC区域
- asp.net – 电子邮件CSS
- asp.net-mvc-4 – Asp.Net Web Api – ModelBind
- 如何使用ASP.NET创建和填充ZIP文件?
- asp.net-mvc – App_Web _ * .dll中的System.Nul
- asp.net – 错误:“无法读取配置部分’system.w
- 有没有办法将内部控件放在ASP.NET自定义控件中?
热点阅读
