0

すべての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>
    }
}

コントローラーポストでこれらのコントロールの null 値を取得しています。

[HttpPost]
public ActionResult Index(IList<Question> ques)
{         
    return View();
}

quesnullここにいます。どうすればこれを解決できますか?

4

1 に答える 1

1

モデルのプロパティをバインドするには、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>
}

など。HiddenFor ヘルパーは、非表示の入力を作成して Id 値をサーバーに送信し、オブジェクトを識別できるようにするために必要です。MVC の Html ヘルパーを調べると、フォームが送信されたときにモデルがサーバーに戻されます。

于 2013-08-31T18:54:34.150 に答える