如何将消息发送到视图ajax-like

时间:2011-03-27 06:31:39

标签: asp.net asp.net-mvc asp.net-mvc-3

我想知道一个模式来做到这一点。我有一个带有method1()

的控制器
method1(){
 return View();

}
[httpost]
method1(string something){

  return View(object);
}

[httpost]
method2(int? id){

  return redirectToaction("method1");
}

View:
<div>
beginform(){
   textfield
   submit button
}
</div>
<div>
if(viewbag.something != null){
   beginform("method2", "controller", new{id=number}){
     <span>@model.info</span>
     submit button
    }
}
</div>

这显示一个视图,这个视图有一个表单文本字段并提交,这个调用method1()但是在HTTPPOst中,在同一视图中我显示另一个表单,它将调用method2()我的问题是如何显示视图中的消息?喜欢“用户已被删除”而无需创建另一个视图。是否有另一种方法在asp mvc中执行此操作,还是必须包含ajax?

我尝试在method2中设置一个viewBag,但由于method2将action重定向到method1,因此它不会停留,并且它不会显示在视图中。 谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用在单个重定向之间保留的TempData:

public ActionResult method1() 
{
    return View();
}

[HttpPost]
public ActionResult method1(string something)
{
    return View(something);
}

[HttpPost]
publicActionResult method2(int? id)
{
    TempData["message"] = "User has been deleted";
    return RedirectToAction("method1");
}

并在视图中显示消息:

<div>@TempData["message"]</div>

如果TempData中没有消息,则只显示空div。如果你不想要空div,你可以进一步检查视图中是否TempData["message"] != null