gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Returning a view with querystring intact

转载 作者:行者123 更新时间:2023-12-01 01:34:25 25 4
gpt4 key购买 nike

我正在 ASP.NET 中创建一个消息传递 Web 应用程序,并且在向用户显示错误消息时遇到一些问题,如果他们要发送消息并且出现错误。

用户可以查看人员的个人资料,然后单击“发送消息”。调用以下操作(url 为/message/create?to=username)并向他们显示一个页面,他们可以在其中输入消息并发送:

public ActionResult Create(string to)
{
ViewData["recipientUsername"] = to;

return View();
}

在显示的页面上,用户名被输入到隐藏的输入字段中。当用户点击“发送”时:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection, string message)
{
try
{
//do message stuff that errors out
}
catch
{
ModelState.AddModelErrors(message.GetRuleViolations()); //adding errors to modelstate
}

return View();
}

因此,现在错误消息可以很好地显示给用户,但是 url 已更改,因为它不再具有查询字符串 (/message/create)。同样,这很好,只是当用户单击刷新按钮时,页面出错,因为 Create 操作不再具有“to”参数。

所以我猜我需要以某种方式维护我的查询字符串。有什么方法可以做到这一点还是我需要完全使用不同的方法?

最佳答案

我假设你正在做类似的事情......

<% Html.BeginForm("Create", "Controller") { %>

<% } %>

当您通过路由创建表单的操作 url 时,现有的路由值将在此过程中丢失。避免这种情况的最简单方法是使用 BeginForm 的无参数版本。 ,因为您位于要发布的页面上。
<% Html.BeginForm() { %>

<% } %>

这将使用当前 url、查询字符串和所有内容作为表单的 ACTION。否则,您将需要传入路由值 toBeginForm重载。

关于asp.net-mvc - ASP.NET MVC : Returning a view with querystring intact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870013/

25 4 0
文章推荐: javascript - 等待时循环替换
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com