在MVC模型中向数组中添加对象
本文关键字:添加 对象 数组 模型 MVC | 更新日期: 2023-09-27 18:05:08
如果我有一个具有另一个对象数组的模型的强类型视图,是否可能有一个将其他对象添加到模型的强类型部分视图?
例如,如果我有一个类型为HandSurvey
的视图,它有一个CurrentGlove
的数组,我可以在hand survey表单中有一个强类型为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>
<% } %>
尝试查看此指南。我想这可能会有帮助。
我更喜欢MVC3,所以这可能是一个猜测。
将窗体从CurrentGlove
的局部视图中取出。
移动第一个视图中的表单,以包含CurrentGlove.ascx
当调用分部视图时,这样做:
<% Html.RenderPartial("~/Views/Resources/CurrentGlove.ascx", Model.CurrentGloves); %>
现在当表单发布时,它会同时将所有表单数据传递给动作