我使用tempdata为用户提供成功消息"然而,在重定向之前它只是重定向而不给出消息。也许我把它放在错误的地方,我尝试将它移到代码的不同部分,但它仍然没有用。
索引视图
@{
ViewBag.Title = "Home Page";
}
@if (TempData["notice"] != null)
{
<p>@TempData["notice"]</p>
}
<div>
<img src="~/Content/Images/TWO_Logo.jpg" alt="Logo" />
</div>
<div class="jumbotron">
<h1></h1>
<p class="lead">
</div>
家庭控制器
namespace com.twcl.it.isms.Controllers
{
[Authorize(Roles = "Administrator, Issue, Transaction_Edit, Print")]
public class HomeController : Controller
{
public ActionResult Index()
{
TempData["notice"] = "Your item(s) successfully requested";
ViewBag.SuccessMessage = TempData["SuccesMeassge"];
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
public ActionResult Logoff()
{
HttpContext.Session.Abandon();
Response.Redirect("http://192.168.5.127");
//Response.StatusCode = 401;
//Response.End();
//////throw new HttpException(401, "Please close your browser to complete Log Off");
return View("Index");
}
答案 0 :(得分:0)
在Index Action方法中,只需添加TempData.Keep("notice");
,这将使tempdata可用于下一跳。
public ActionResult Index()
{
TempData.Keep("notice");
ViewBag.SuccessMessage = TempData["SuccesMeassge"];
return View();
}
在视图上显示警告消息
@if (TempData.ContainsKey("notice"))
{
<script type="text/javascript">
alert(@TempData["notice"]);
</script>
}
有关保持和窥视的详细信息。 when-to-use-keep-vs-peek-in-asp-net-mvc
答案 1 :(得分:0)
如果从操作方法返回RedirectResponse,它将向浏览器发送302响应,并将位置标头设置为您要重定向到的URL,浏览器向该URL发出新的GET请求。在新的GET请求之前,您将无法显示警报。
您可以做的是,在重定向呈现的页面中显示警报消息。
[HttpPost]
public ActionResult Save(SomeViewmodel model)
{
TempData["Msg"] = "Some message";
return RedirectToAction("Index");
}
现在,在Index操作返回的视图中,您可以直接访问TempData。无需在索引操作中再次通过ViewBag读取并传递它。
<script>
var msg = '@TempData["Msg"]';
if (msg.length) {
alert(msg);
}
</script>