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 – 在ASP.NET MVC中保护ViewModel
- asp.net – 如何从内容页面访问母版页控件
- asp.net-mvc-3 – 如何从ASP.NET MVC#输出中删除空格?
- asp.net-mvc – 实体框架 – 无法创建x类型的常量值.在此上
- asp.net – 便携式区域的缺点
- asp.net – 导致GridView无效回发的TemplateField按钮
- asp.net-mvc-5 – OWIN是否调用MVC(ASP.NET MVC)?
- asp.net-mvc-4 – 在常规MVC项目中使用breeze而不是spa
- asp.net-mvc – 允许Anonymous在asp.net mvc 3中调用某些操
- ASP.NET AJAX中的$create函数是什么?