有人能给我一个一次性保存所有html网格数据的例子吗。我有这样的看法。
@model IList<SURVEY.Models.Question>
@using (Html.BeginForm("Index", "Survey", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-3" }))
{
@foreach(var item in Model)
{
<tr>
<td>@item.Ans1</td>
<td align="center">
<label>
<input type="radio" name="optionAS_@item.QuestionId" value="1" id="optionAS_1" onclick="disableAs(this,@item.QuestionId,1)"/>
</label>
</td>
<td align="center">
<label>
<input type="radio" name="optionAS_@item.QuestionId" value="2" id="optionAS_1" onclick="disableAs(this,@item.QuestionId,2)"/>
</label>
</td>
</tr>
}
}
我在控制器帖子中得到了这些控件的空值。
[HttpPost]
public ActionResult Index(IList<Question> ques)
{
return View();
}
我在这里得到的是ques
和null
。有人能告诉我如何解决这个问题吗?
您应该使用html助手来绑定模型的属性,您的代码可能如下:
@for(var i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.HiddenFor(_ => Model[i].Id)
Model[i].Ans1
</td>
<td align="center">
<label>
@Html.RadioButtonFor(_ => Model[i].Name)
</label>
</td>
...
</tr>
}
等等。HiddeFor帮助程序需要创建隐藏输入,以便将Id值发送到服务器,从而使您能够识别对象。看看MVC中的HtmlHelpers,当表单提交时,您会将模型返回到服务器。