![](/img/trans.png)
[英]Returning form, querystring, cookie values by priority in 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.