27

2つの入力タイプ=テキストのページがあります..

@model MVC3.ViewModel.TalkToUsVM

@using (Html.BeginForm())
{
    <ul>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Name)</li>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Email)</li>
    </ul>

    <input type="submit" value="Save"/>
}

私のコントローラーでは、これを行います:

[HttpPost]
public ActionResult Create(TalkToUsRequest talkToUsRequest)
{
    var vm = new TalkToUsVM();

    if (TryValidateModel(talkToUsRequest))
    {
        vm.Result = "Success";

        return View("Create",vm);
    }

    vm = new TalkToUsVM
    {
        Result = "Errrooooooor",
        TalkToUsRequest = talkToUsRequest
    };

    return View(vm);
}

だから問題..私のモデルが有効な場合、結果を「成功」に設定し、この時点でvm.TalkToUsRequestはnullです..しかし、ページがレンダリングされると、すべてのフィールドは送信したときと同じ値になります..私は vm.TalkToUsRequest = null を設定しています!! このフィールドをクリアするにはどうすればよいですか?

4

2 に答える 2

75

したがって、このシナリオでは、同じビューに戻る場合、モデルの状態をクリアする必要があります。以下を試してください:

    ModelState.Clear();
    return View(vm);
}
于 2012-06-01T17:52:28.937 に答える