我正在使用 MS MVC 3 构建一个 Web 应用程序并遇到了一个问题,这可能是由于我对模型绑定(bind)的理解存在漏洞。
首先,我有一个相当标准的模型(为简洁起见省略了不相关的东西,更改了名称以保护无辜对象的隐私):
public class ModelBase
{
public int Id { get; set; }
}
public class Order : ModelBase
{
public List<Product> Products { get; set; }
}
public class Product : ModelBase
{
public int OrderId { get; set;}
}
为了显示和编辑这些,我有一个强类型化到 Order 类的 View ,其中包含一个强类型化到 Product 类的部分 View 。部分 View 的顶部如下所示:
@model Product
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.OrderId)
//loads of actual editable properties
我像这样将部分插入到主视图中:
@Html.Partial("EditorTemplates/Product", Model.Products.First())
...当 View 在浏览器中呈现时,“Id”隐藏输入包含订单的 Id,而不是我期望和需要的产品的 Id :(
我错过了什么?是否可以在不更改模型和 View 结构的情况下修复它?
最佳答案
在更改我的测试项目时,我可以确认
/Home/Index?id=33
或
/首页/索引/33
确实会覆盖模型值。你能从 url 中删除这个参数吗?
关于asp.net-mvc - ASP.Net MVC 强类型部分 View 和继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9064354/