我有一个更新存储过程,它根据用户在表单上检查的内容更新数据库中的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>
}
答案 0 :(得分:1)
要将集合绑定到模型并将其传递给控制器,您需要以html格式的索引值。请阅读此博客帖子,例如:Phil Haack - Model Binding To A List和nmarun - 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
}
}
}