1

注意到,当由于view返回validation errorsurl仍然指向action已经完成validation

例如,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 的方法。当用户通过浏览器输入 url 时,这是一个“获取”请求,因此将调用另一个“编辑”操作。

于 2012-12-05T10:17:52.950 回答