加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC:返回查询字符串完整的视图

发布时间:2020-12-16 09:58:01 所属栏目:asp.Net 来源:网络整理
导读:我正在ASP.NET中创建一个消息传递Web应用程序,如果他们发送消息并且出现错误,则在向用户显示错误消息时会遇到一些问题. 用户可以查看人员的个人资料,然后单击“发送消息”.调用以下操作(url是/ message / create?to = username)并向他们显示一个页面,他们可
我正在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,查询字符串和all作为表单的ACTION.否则,您需要将路由值传递给BeginForm重载.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读