如果我的模型具有一个具有另一个对象数组的强类型视图,是否可以使用强类型的局部视图将该另一个对象添加到模型中?
例如,如果我的视图类型为HandSurvey
,其数组为CurrentGlove
,那么我是否可以在手动调查表单中使用强类型为CurrentGlove
的部分视图用户点击提交按钮,它不会返回新视图,但会向CurrentGlove
模型的数组添加HandSurvey
对象?我该怎么办呢?对不起,如果没有意义,我很难掌握mvc结构。
这些是模型:
public class HandSurveyModel
{
public HandSurveyModel() { }
[DisplayName("Location Number:")]
public string LocationNumber { get; set; }
[DisplayName("Location Name:")]
public string LocationName { get; set; }
public List<HandSurveyRisk> Risks { get; set; }
public List<CurrentGlove> CurrentGloves { get; set; }
}
public class CurrentGlove
{
public CurrentGlove() { }
public int Quantity { get; set; }
public string MFGNumber { get; set; }
public string Size { get; set; }
public string UOM { get; set; }
public string Description { get; set; }
public string Department { get; set; }
public string Comments { get; set; }
}
这是视图中的代码,键入HandSurveyModel
:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<fieldset>
<legend>Hand Protection Survey</legend>
<% using (Html.BeginForm("HandSurvey", "Resources"))
{ %>
<div style="float: left; margin-left: 10px; margin-right: 10px">
<%= Html.LabelFor(x => Model.LocationNumber)%>
<%= Html.TextBoxFor(x => Model.LocationNumber) %></div>
<div>
<%= Html.LabelFor(x => Model.LocationName)%>
<%= Html.TextBoxFor(x => Model.LocationName) %></div>
<fieldset>
<legend>Risk Assessment</legend>
<fieldset style="float: left; margin: 10px">
<legend>Chemical</legend>
<% for (int i = 0; i < Model.Risks.Count; i++)
{%>
<%= Html.CheckBoxFor(x => x.Risks[i].IsChecked)%>
<%= Html.DisplayFor(x => x.Risks[i].Text)%>
<br />
<%} %>
</fieldset>
<input type="submit" value="OK" />
<% } %>
</fieldset>
<fieldset>
<legend>Current Gloves</legend>
<% Html.RenderPartial("~/Views/Resources/CurrentGlove.ascx", new CurrentGlove()); %>
</fieldset>
</fieldset>
</asp:Content>
这是局部视图中的代码,键入CurrentGlove
:
<% using (Html.BeginForm("CurrentGlove", "Resources")) { %>
<%= Html.EditorForModel() %>
<p><input type="submit" value="OK" id="btnSearch"/></p>
<% } %>
答案 0 :(得分:1)
尝试查看this指南。我认为这可能会有所帮助。
答案 1 :(得分:0)
我更像是一个MVC3人,所以这可能是一个猜测。
从CurrentGlove
的部分视图中取出表单。
在第一个视图中移动表单以包含CurrentGlove.ascx
调用局部视图时,请执行以下操作:
<% Html.RenderPartial("~/Views/Resources/CurrentGlove.ascx", Model.CurrentGloves); %>
现在,当表单发布时,它会同时将所有表单数据传递到操作中。