保存MVC4 html网格的所有数据



有人能给我一个一次性保存所有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();
}

我在这里得到的是quesnull。有人能告诉我如何解决这个问题吗?

您应该使用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,当表单提交时,您会将模型返回到服务器。

最新更新