如果下面的ASP.NET MVC2代码在Create controller response中显示消息“Test”。
在“单声道”消息中,“创建”视图中不显示apper。
消息出现在创建后调用的下一个响应中。
如何让Mono在ASP.NET中显示同一请求中的TempData值?
[HttpPost]
public RedirectToRouteResult Create()
{
TempData["Message"] = "Test";
return RedirectToAction("Index");
}
public ActionResult Index() {
return View();
}
的Site.Master:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html>
<html>
<head runat="server">
<script src="<%= Url.Content("~/Scripts/jquery/jquery-1.7.1.js")%>" type="text/javascript"></script>
<% if (TempData["Message"]!=null) {
%>
$(function() {
setTimeout( function() {
showMessage ( '<%= TempData["Message"] as string %>');
}, 300 );
});
<% } %>
</script>
</head>
答案 0 :(得分:1)
我建议您在控制器操作中使用TempData
值,而不是在视图中使用
[HttpPost]
public ActionResult Create()
{
TempData["Message"] = "Test";
return RedirectToAction("Index");
}
public ActionResult Index()
{
ViewData["Message"] = TempData["Message"];
return View();
}
并在视图中:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html>
<html>
<head runat="server">
<script src="<%= Url.Content("~/Scripts/jquery/jquery-1.7.1.js")%>" type="text/javascript"></script>
<% if (ViewData["Message"] != null) { %>
$(function() {
window.setTimeout(function() {
showMessage (<%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["Message"]) %>);
}, 300);
});
<% } %>
</script>
</head>
顺便说一句,我建议您使用视图模型而不是使用ViewData
,并将视图强烈输入此视图模型。