Asp.net-Mvc
將屬性包含和排除屬性與復雜類型的嵌套對象
好吧,這很奇怪。我不能在 ASP.NET MVC 上使用具有復雜類型嵌套對象
BindAttribute的 ’sInclude和屬性。Exclude這是我所做的:
模型:
public class FooViewModel { public Enquiry Enquiry { get; set; } } public class Enquiry { public int EnquiryId { get; set; } public string Latitude { get; set; } }HTTP POST 操作:
[ActionName("Foo"), HttpPost] public ActionResult Foo_post( [Bind(Include = "Enquiry.EnquiryId")] FooViewModel foo) { return View(foo); }看法:
@using (Html.BeginForm()) { @Html.TextBoxFor(m => m.Enquiry.EnquiryId) @Html.TextBoxFor(m => m.Enquiry.Latitude) <input type="submit" value="push" /> }根本不起作用。如果我按照此處所述定義
BindAttributeforEnquiry類,我只能使這項工作:
是的,你可以讓它像這樣工作:
[Bind(Include = "EnquiryId")] public class Enquiry { public int EnquiryId { get; set; } public string Latitude { get; set; } }和你的行動:
[ActionName("Foo"), HttpPost] public ActionResult Foo_post(FooViewModel foo) { return View(foo); }這將僅包括
EnquiryId綁定中的 並保留為Latitude空。話雖如此,我不建議您使用 Bind 屬性。我的建議是使用視圖模型。在這些視圖模型中,您只包含對這個特定視圖有意義的屬性。
因此,只需重新調整您的視圖模型:
public class FooViewModel { public EnquiryViewModel Enquiry { get; set; } } public class EnquiryViewModel { public int EnquiryId { get; set; } }你去吧。不再需要擔心綁定。