初心者の質問 - 私はHomeController、HomeModelおよびHomeViewを持っています。ユーザーがhttp://page/Home
ページに来ると、Index
メソッドが実行され、コントロールを入力できます。彼がボタンをクリックすると(ポストバック)、プロセスアクションが実行され、エラーの場合、アプリケーションはModelState.AddModelError
メソッドを呼び出します。その後、Index
アクションが再度呼び出され、ページにエラーが表示されます。新しいビューを返すときにURLを保持する方法
これは問題ありませんが、ポストバック後に新しいURLはhttp://page/Home
の代わりにhttp://page/Home/Index
です。どのようにこれを防ぐためのアイデア?
PS - 私はthis解決策を試してみましたが、その後、新しいURLはhttp://page/Home?...long string of serialized ModelState data...
私のコントローラのようなものだった:
[HttpGet]
public ActionResult Index(MyModel model)
{
return View(model);
}
[HttpPost]
public ActionResult Process(MyModel model)
{
if (...error...)
{
model.SetErrorState();
ModelState.AddModelError("ProcessError", "error message");
return View("Index", model);
}
else
{
// do something...
model.SetSuccessState();
return View("Index", model);
}
}
私は間違いを犯しました。どちらの方法も、同じタイプの「MyModel」を持つ1つのパラメータが必要です。この問題を修正してソリューションを適用すると、「HomeControllerのタイプはすでに、同じパラメータタイプのIndexというメンバを定義しています」という文句を言います。 – sventevit
@sventevitを更新しました:)(未使用の) 'FormCollection' varを追加して区別するだけです。 – scgough
完璧、ありがとう:) – sventevit