1

が原因でが返された場合でも、URLは次のことを行ったを指していることに気付きました。viewvalidation errorsactionvalidation

たとえば、アクションEdit Viewへのフォームがあります。Update

@Html.BeginForm("Update","MyController",FormMethod.Post,new{})
{
...
}

更新アクション:

public ActionResult Update(Entity myEntity)
{
    is(ModelState.IsValid)
    {
        ...
        return RedirectToAction("List");
    }

    return View("Edit",myEntity);
}

validation 失敗した場合、これはEdit view再びエラーを示しますが、アドレスは

   .../Update

私は何か間違っていますか?これを修正するには?

4

2 に答える 2

3

am I doing something wrong ? how to fix this ?

それがどのように機能するか、モデルRedirectToActionで試すことができます。TempData

ここみたいに:

ASP.NET MVC ActionResult View()がURLを変更しない

于 2012-11-30T13:47:45.677 に答える
1

あなたがしたいことは、「更新」に投稿する代わりに、あなたがしているのと同じアクションに投稿しますが、次のように[HttpPost]でマークします

[HttpPost]
public ActionResult Edit(SomeViewModel someViewModel) {
   is(ModelState.IsValid)
    {
        ...
        return RedirectToAction("List");
    }
     return View(myEntity);
}

HttpPost を使用するメソッドは、ブラウザーが "Post" 要求を検出した場合にのみ呼び出されます。ユーザーがブラウザから URL を入力すると、それは「取得」リクエストなので、他の「編集」アクションが呼び出されます。

于 2012-12-05T10:17:52.950 に答える