tug*_*erk 11 asp.net-mvc defaultmodelbinder model-binding asp.net-mvc-3
好的,这很奇怪.我不能用BindAttribute
的Include
和Exclude
性质与ASP.NET MVC复杂类型嵌套对象.
这是我做的:
这是我的模特:
public class FooViewModel {
public Enquiry Enquiry { get; set; }
}
public class Enquiry {
public int EnquiryId { get; set; }
public string Latitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
HTTP Post动作:
[ActionName("Foo"), HttpPost]
public ActionResult Foo_post(
[Bind(Include = "Enquiry.EnquiryId")]
FooViewModel foo) {
return View(foo);
}
Run Code Online (Sandbox Code Playgroud)
视图:
@using (Html.BeginForm()) {
@Html.TextBoxFor(m => m.Enquiry.EnquiryId)
@Html.TextBoxFor(m => m.Enquiry.Latitude)
<input type="submit" value="push" />
}
Run Code Online (Sandbox Code Playgroud)
根本不起作用.如果我按照此处的说明定义BindAttribute
for Enquiry
类,我可以只做这项工作:
Dar*_*rov 15
是的,你可以让它像那样工作:
[Bind(Include = "EnquiryId")]
public class Enquiry
{
public int EnquiryId { get; set; }
public string Latitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和你的行动:
[ActionName("Foo"), HttpPost]
public ActionResult Foo_post(FooViewModel foo)
{
return View(foo);
}
Run Code Online (Sandbox Code Playgroud)
这将仅包括EnquiryId
绑定中的并保留Latitude
null.
这就是说,使用Bind属性不是我推荐你的东西.我的建议是使用视图模型.在这些视图模型中,您只包含对此特定视图有意义的属性.
所以,只需重新阅读您的视图模型:
public class FooViewModel
{
public EnquiryViewModel Enquiry { get; set; }
}
public class EnquiryViewModel
{
public int EnquiryId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你去吧 不再需要担心绑定.
归档时间: |
|
查看次数: |
16331 次 |
最近记录: |