在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>
<% } %>

在MVC模型中向数组中添加对象

尝试查看此指南。我想这可能会有帮助。

我更喜欢MVC3,所以这可能是一个猜测。

将窗体从CurrentGlove的局部视图中取出。

移动第一个视图中的表单,以包含CurrentGlove.ascx

的部分视图

当调用分部视图时,这样做:

<% Html.RenderPartial("~/Views/Resources/CurrentGlove.ascx", Model.CurrentGloves); %>

现在当表单发布时,它会同时将所有表单数据传递给动作