asp.net-mvc – 重定向到操作,需要传递数据
|
我有一个控制器,处理三个特定于我的问题的操作。 第一个是编辑操作,它返回具有HTML表单的视图,用户可以编辑给定项目上的属性。 第二个是更新操作,它接受从浏览器返回的更新并更新数据库。当更新成功时,我们执行重定向到操作。 第三个是显示给定项目的细节的显示动作。此操作是我们在成功更新后重定向到的地方。 流程是: 显示 – >编辑 – >更新(成功:y – >重定向到显示,n – >返回编辑) 我想要实现的是在更新成功时有一个标志跳闸,以便在下一个显示视图中,我可以显示一个确认消息给用户。问题是,我不是100%肯定的最好的方式通过RedirectToAction()调用来携带这些数据。一个想法,我有使用查询字符串?我们已经携带变量的查询字符串为另一个目的,但我的一部分怀疑,滥用它。对重定向的调用如下。 RouteValueDictionary dict = Foo.GetRouteValues(bar);
RedirectToAction("Show",dict);
我已经阅读了这个问题,但是关于使用TempData属性,如果我不必要。 Question 感谢您的一些建议! 解决方法编辑:对不起,最初没有看到你的笔记,不想使用TempData。简而言之,如果客户端刷新/重新加载他们已重定向到的页面,您是否希望您的邮件重新出现? 如果你这样做,那么使用querystring,类似: return(RedirectToAction("Index",new { message = "hi there!" }));
然后定义 public ActionResult Index(string message) { }
或显式地拉出Request.QueryString [“消息”],并以通常的方式将其传递给View通过ViewData。这也适用于不接受来自您网站的Cookie的浏览器。 如果不希望消息再次显示,则ASP.NET MVC 1.0为此确切目的提供TempData集合。 TempData属性值存储在会话状态,直到来自同一浏览器的下一个请求,之后它们被清除 – 所以如果你在返回RedirectToAction之前立即在TempData中添加一些东西,它将在重定向的结果上可用,但会被清除之后立即。 以下是ASP.NET MVC启动项目中HomeController的简单更改: public ActionResult Index() {
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string submitButton) {
TempData["message"] = "You clicked " + submitButton;
return(RedirectToAction("Index"));
}
public ActionResult About() {
return View();
}
和相应的视图/Views/Home/Index.aspx应该包含这样: <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<% if (TempData["message"] != null) { %>
<p><%= Html.Encode(TempData["message"]) %></p>
<% } %>
<% using (Html.BeginForm()) { %>
<input type="submit" name="submitButton" value="Button One" />
<input type="submit" name="submitButton" value="Button Two" />
<% } %>
</asp:Content>
您会注意到在POST-REDIRECT-GET序列之后立即显示TempData消息,但如果刷新页面,则不会再次显示。 请注意,ASP.NET MVC 2中的此行为已更改 – 有关详细信息,请参阅this article中的“在操作方法之间传递状态”。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 将JSON格式的DateTime传递给ASP.NET MVC
- asp.net – 表单认证ReturnUrl和子域名用于单点登录
- asp.net-mvc-5 – MVC5中的域路由
- asp.net-mvc – 如何填充/验证您的ViewModels?
- asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的OAuth
- [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成
- 在asp.net中使用加密数据库联接字符串保证数据安全
- ASP.NET MVC与ASP.NET 4.0
- 为什么在ASP.Net中向StatusDescription添加换行符会关闭连接
- asp.net-mvc – 带有Expression Web 4的ASP.NET MVC(RAZOR)
- asp.net-mvc – 在IISExpress上通过计算机名访问
- asp.net-mvc-3 – ASP.Net MVC 3:在哪里处理会话
- .net – TagBuilder从MVC 3 beta版转到RC
- asp.net-mvc – 如何在ASP.net MVC 4 RouteConfi
- asp.net-mvc – MVC应用程序部署; System.Data.S
- asp.net-mvc – VIEWDATA和VIEWBAG存储在MVC中的
- 我应该使用用户名,还是用户ID来引用ASP.NET中的经
- Asp.net Core 1.1 升级后操作mysql出错的解决办法
- asp.net-mvc-4 – MVC4和页面生命周期?
- 点击图片,AJAX删除后台图片文件的实现代码(asp.n
