查找字符串参数在发布后删除并返回到asp.net mvc中的同一页面

cp1*_*100 0 javascript asp.net-mvc post asp.net-mvc-5

我正在实现一个asp.net mvc5应用程序,并且在post操作和查询字符串参数方面存在问题.

我的页面网址是 http://localhost/site/person/edit?personId=20

[HttpGet]
public ActionResult Edit(int personID)
{
    // ....   

    return View(person);
}
Run Code Online (Sandbox Code Playgroud)

在此页面中包含提交按钮,它将执行post方法.在post方法中,如果Model.Isvalid得到false,我将返回带有Model的视图.

[HttpPost]
public ActionResult Edit(Person person)
{
    if (ModelState.IsValid)
    {
          //....
          return RedirectToAction("Index", "Dashboard", new { area = "" });
    }
    else
    {
          return View(person);
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常.但问题是,一旦Model.IsValid变为false,它将进入视图但没有查询字符串参数.然后URL就像http://localhost/site/person/edit

有没有办法获取带有查询字符串参数的URL.

Ral*_*ley 6

我在另一个SO帖子上找到了答案: 当表单验证失败时,错过了查询字符串参数

对我来说,解决方案是将删除的值直接连接到表单标记上.

使用BeginForm()方法:

@using (Html.BeginForm("Edit", "Person", routeValues: new {personID = Model.id}, method: FormMethod.Post))
Run Code Online (Sandbox Code Playgroud)