查询字符串参数被删除后做的帖子,并返回到同一页在asp.net mvc
Query string parameters get removed after do the post and return to the same page in asp.net mvc
我正在实现asp.net mvc5应用程序,并且有一个post操作和查询字符串参数的问题。
我的网页url是http://localhost/site/person/edit?personId=20
[HttpGet]
public ActionResult Edit(int personID)
{
// ....
return View(person);
}
在这个页面包含提交按钮,它将做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);
}
}
可以正常工作。但问题是一旦模型。IsValid = false,它将进入视图,但不带查询字符串参数。URL是http://localhost/site/person/edit
是否有办法获得URL与查询字符串参数
我在另一个帖子上找到了答案:表单验证失败时缺少查询字符串参数
我的解决方案是将删除的值直接连接到表单标记上。
使用BeginForm()方法:
@using (Html.BeginForm("Edit", "Person", routeValues: new {personID = Model.id}, method: FormMethod.Post))
是。不要在回复POST时提供(200 OK)内容,而是用查询字符串重定向到GET方法。
在POST中提供内容几乎总是一个坏主意,因为当用户刷新页面时,POST会再次生成(同时在许多用户代理中会出现一个令人困惑的对话框,询问用户是否确定要重新发送POST)
将ID也添加到POST方法中:
[HttpPost]
public ActionResult Edit(int personID, Person person)
{
if (ModelState.IsValid)
{
//....
return RedirectToAction("Index", "Dashboard", new { area = "" });
}
else
{
return View(person);
}
}
你的视图也应该POST到相同的URL,因为它在:
@using (Html.BeginForm())
相关文章:
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 返回上一页时,Javascript仍处于活动状态
- Python返回上一页并记住元素
- 如何返回到上一页并用php或javascript刷新它
- 返回上一页,不加载执行正文
- 从mysql数据库中删除项目,然后返回最后一页
- 如何返回一页并检查调用该操作的页面
- 浏览器返回上一页功能,如果返回如何重新加载文档
- 如何使用 ajax 一次抓取一页,返回下一页链接并再次访问
- 自动返回上一页
- 如何在 asp.net 中使用角度选项卡返回上一页
- 如果用户单击“返回”,如何在上一页上隐藏引导模式
- 如何在不刷新 angularjs 的情况下返回上一页
- 如何阻止/防止用户在注销后返回上一页 ASP.NET
- 如何在多页面中制作一个 JavaScript 表单向导,其中包含下一页,并取消并返回并提交最后一页
- 蛋糕2,返回/取消按钮转到上一页
- javascript重定向到带有表单操作post的页面,然后返回到带有输入值的上一页
- PHP:如何在关闭弹出窗口时返回到上一页
- jQuery Mobile:如何返回一页
- javascript退格默认问题..返回一页