簡體   English   中英

ASP.NET MVC:返回查詢字符串完整的視圖

[英]ASP.NET MVC: Returning a view with querystring intact

我正在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。 否則,您需要將路由值傳遞to BeginForm重載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM