2

これは、教育がモデルのリストであるという私の見解です。

 @using chpayroll.Models.CustInformations
 @model CustInfoExtract

 @Html.HiddenFor(x => x.flag, new { @id = "flag" })
      @Html.HiddenFor(x => x.StaffId)
        <table style=" width:730px">    
            <tr>
                <th>Country</th>
                <th>Board</th>
                <th>Level</th>
                <th>PassedYear</th>
                <th>Division</th>
            </tr>     
            <tr> 
               @Html.EditorFor(x => x.education)
            </tr>
            <tr>
               <td><input type="submit" value="Add Another" id="addedu"/> </td> 
            </tr>
        </table> 

私は以下のようなエディターテンプレートを持っています

@using staffInfoDetails.Models
@model staffInfo.education

@Html.HiddenFor(x=>x.staffId)

<tr>
    <td >@Html.DropDownListFor(x => x.country, Model.countryList, "--select--", new { @id="country"})</td>
    <td>@Html.TextBoxFor(x => x.board, new { @id="board"})</td>
    <td>@Html.TextBoxFor(x => x.level, new { @id="level"})</td>
    <td>@Html.TextBoxFor(x => x.passedYr, new { @id="passedYr"})</td>
    <td>@Html.DropDownListFor(x => x.passedDiv, Model.passedDivList, "--select--", new { @id="division"})</td>
</tr>

モデルをコントローラーからビューに渡し、ビューからコントローラーに戻そうとしています。モデルをビューに渡していたときに、教育リストは渡されましたが、モデルをビューからコントローラーに渡そうとすると、教育リストを除いてすべてが渡されました。どうすればこの問題を解決できますか?

4

1 に答える 1

1

ドロップダウンリストから選択した値のみがポストバックされるため、検証が失敗した場合(つまり、ビューを再表示する必要がある場合)にドロップダウンリストを再入力する必要があります。

POSTアクションは、次のようになります。

[HttpPost]
public ActionResult Home(CustInformations viewModel)
{
    if (!ModelState.IsValid)
    {
        // Re-populate drop-down list and redisplay form
        viewModel.DropdownListOptions = _repository.getEductionList();
        return View(viewModel);
    }

    // Validation passed
    // Save, update, etc and redirect to new page
}
于 2012-09-30T13:53:09.187 に答える