我正在使用ASP.NET MVC 3(APSPxView引擎)。ASP.NET MVC 3.模型包含對象的列表<>,將它傳遞給視圖,但它返回爲NULL
我有一個模型(MasterModel),它包含一些屬性。其中之一是對象的列表(DetailModels):
public class MasterModel
{
[DisplayName("Master Name")]
public string MasterName { get; set; }
[DisplayName("Master Value")]
public int? MasterValue { get; set; }
public List<DetailModel> Details { get; set; }
}
public class DetailModel
{
[DisplayName("Detail Name")]
public string DetailName { get; set; }
[DisplayName("Detail Value")]
public int? DetailValue { get; set; }
}
所以我需要與形式就可以了,我可以填補MasterValue物業的看法,我想爲詳細信息領域的GridView和填寫DetailValues在gridview中。
所以我的控制器方法看起來如此:
public ActionResult MasterDetailsView()
{
List<DetailModel> details = new List<MasterDetail>
{
new DetailModel
{
DetailName = "detail0",
},
new DetailModel
{
DetailName = "detail1",
},
new DetailModel
{
DetailName = "detail2",
},
};
MasterModel master = new MasterModel
{
MasterName = "Master",
Details = details
};
return View("MasterDetailsView", master);
}
[HttpPost]
public ActionResult MyMasterDetailsViewResponseHandler ([ModelBinder(typeof(DevExpressEditorsBinder))] MasterModel model)
{
// Some code
}
最後我的看法:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Main.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.Models.MasterModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<%
using (Html.BeginForm("MyMasterDetailsViewResponseHandler", "Home", FormMethod.Post))
{
%>
<%= Html.LabelFor(m => m.MasterName) %>
<%= Html.TextBoxFor(m => m.MasterName)%>
<%= Html.LabelFor(m => m.MasterValue) %>
<%= Html.TextBoxFor(m => m.MasterValue)%>
//Some code to add Grid view for Details
Html.DevExpress().Button(settings =>
{
settings.Name = "btnSubmit";
settings.Width = Unit.Percentage(100);
settings.Text = "Submit";
settings.UseSubmitBehavior = true;
}).GetHtml();
<%
}
%>
</asp:Content>
所以,我的第一個和主要問題: 如果我提交的形式,它返回我的模型,其中MasterValue被正確填充,但Details屬性爲空。即使我沒有添加GridView,只是將Details傳遞給視圖並提交表單而沒有任何細節變化。無論如何細節無效。你能幫我解決我的問題嗎?
第二個問題是如何正確地爲GridView創建GridView,以便我可以填充它並通過一次提交按鈕單擊來提交所有內容?
閱讀http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx可能你會發現一些東西找出解決方案 – Rafay
你確定DevExpressEditorsBinder能夠綁定複雜的模型嗎? DefaultModelBinder是。這完全是關於命名輸入。 –
謝謝你的評論。第一條評論中的鏈接可以幫助我,現在我可以傳遞數據並將其恢復,並且我明白如何做到這一點。但據我所知,這種方法意味着,我不能做我自己的UserControl,例如GridView,並且網格視圖的每一行都是DetailModel,對不對? – Ceridan