在MVC模型中将对象添加到数组

时间:2011-08-11 14:24:12

标签: c# asp.net-mvc-2

如果我的模型具有一个具有另一个对象数组的强类型视图,是否可以使用强类型的局部视图将该另一个对象添加到模型中?

例如,如果我的视图类型为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>
<% } %>

2 个答案:

答案 0 :(得分:1)

尝试查看this指南。我认为这可能会有所帮助。

答案 1 :(得分:0)

我更像是一个MVC3人,所以这可能是一个猜测。

CurrentGlove的部分视图中取出表单。

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

的部分视图

调用局部视图时,请执行以下操作:

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

现在,当表单发布时,它会同时将所有表单数据传递到操作中。