使用foreach循环MVC更新数据

时间:2011-02-21 14:52:01

标签: asp.net-mvc-3

我有一个更新存储过程,它根据用户在表单上检查的内容更新数据库中的DisplayTestimonials字段。如何在控制器中更新数据库中的checked字段?我想我必须使用控制器来调用该更新存储过程,对吧?我不知道如何从控制器中的foreach循环传递值。有什么帮助吗?

这是我的观点。

@model Models.SurveyTestimonials

@{
    Layout = "~/CustomViews/cap/Shared/_DealerLayout.cshtml";
}
@section Tags {

        @Html.UserControl("Header", new { id = Model.Channel.ChannelId })

}

@section Menu {
    @Html.ActionLink("Premier Dealer", "Index", "Premier", new { area = "Apps" }, new { })
}      
<h2>Manage Survey Testimonials</h2>
@using (Html.BeginForm())
{
<div>
<table>
    <thead>
        <tr>
            <td>Select</td>
            <td>First Name</td>
            <td>Last Name</td>
            <td>Testimonial</td>
        </tr>
    </thead>
@foreach (var testimonials in Model.Testimonials)
{
    <tr>
        <td>@Html.CheckBox("" + testimonials.DisplayTestimonials)
            @Html.Hidden(testimonials.ResponseId.ToString())
        </td>
        <td>@Html.Label(testimonials.FirstName)</td>
        <td>@Html.Label(testimonials.LastName)</td>
        <td>@Html.Label(testimonials.Question5Answer)</td>
    </tr>   
}
<tr>
    <td colspan="3">
        <input type="submit" id="Submit" value="Save" class="PremireButton" />
    </td>
</tr>
</table>
</div>
}

2 个答案:

答案 0 :(得分:1)

要将集合绑定到模型并将其传递给控制器​​,您需要以html格式的索引值。请阅读此博客帖子,例如:Phil Haack - Model Binding To A Listnmarun - ASP.NET MVC 2 Model Binding for a Collection

答案 1 :(得分:0)

您没有显示Html.BeginForm("MyMethod", "MyController")视图代码,因此我将使用通用名称。

您需要一个控制器操作方法:

public ActionResult MyMethod(MyModel model)
{
    foreach (var t in model.Testimonials)
    {
       if (t.DisplayTestimonials)
       {
           // do update logic
       }
    }
}