C# 如何在母版页中按名称呈现局部视图
我正在尝试实现类似RubyonRail的东西,以便将消息传递到下一个页面请求。我想要采取的方法是在会话上下文中存储一对(部分视图名称、模型对象),并在呈现显示flash消息的请求时在母版页中呈现它 在我的C# 如何在母版页中按名称呈现局部视图,c#,asp.net,asp.net-mvc-2,master-pages,partial-views,C#,Asp.net,Asp.net Mvc 2,Master Pages,Partial Views,我正在尝试实现类似RubyonRail的东西,以便将消息传递到下一个页面请求。我想要采取的方法是在会话上下文中存储一对(部分视图名称、模型对象),并在呈现显示flash消息的请求时在母版页中呈现它 在我的HttpApplication子类中,我现在拥有: public class Global : System.Web.HttpApplication { public class FlashStuff { private string flashViewName;
HttpApplication
子类中,我现在拥有:
public class Global : System.Web.HttpApplication
{
public class FlashStuff
{
private string flashViewName;
private object model;
public FlashStuff(string flashViewName, object model)
{
this.flashViewName = flashViewName;
this.model = model;
}
public string FlashViewName
{
get { return flashViewName; }
}
public object Model
{
get { return model; }
}
}
internal static void Flash(string flashViewName, object model)
{
HttpContext.Current.Session.Add("flash", new FlashStuff(flashViewName, model));
}
//...
}
我还有一个书签控制器
,可以添加书签:
[HandleError]
public class BookmarkController : Controller
{
public ActionResult Add()
{
return View();
}
[HttpPost]
public ActionResult Add(Bookmark_AddModel model)
{
if (ModelState.IsValid)
{
//...
Global.Flash("BookmarkAddedFlash", model);
return RedirectToAction("Index", "Bookmark");
}
//...
}
//...
}
在我的母版页中,我现在想要如下内容:
<% var session = HttpContext.Current.Session;
if (session["flash"] != null)
{
var flashStuff = (MyApp.Web.Global.FlashStuff)session["flash"]; %>
<div><!-- render in here --></div>
<% session.Remove("flash");
} %>
我只想在提出后续请求时呈现视图;i、 e.一个请求设置flash消息,随后的请求呈现该消息
如何做到这一点?在ASP.NET MVC中调用RoR的Flash对象的等价物 或者直接在
操作2
视图中使用它:
<div><%: TempData["message"] %></div>
内部
TempData
使用会话对象存储数据,但在一次重定向后,它会自动失效。因此,您试图实现的内容已经存在。我不确定我是否完全理解。我最近使用asp.NETMVC项目实现了一个“咆哮”基础设施。这听起来在某些方面很相似。以下是该实现的链接:
希望这有帮助
Bob
TempData
似乎就是我要寻找的存储数据的工具。但是,我想在母版页中呈现一个部分视图,并给出部分视图的名称。我该怎么做?您可以使用
或提供完整路径
。另一件您可以看一看的事情是带有Html.action和Html.RenderAction助手的子操作。菲尔·哈克(Phil Haack)写了一篇关于他们的博客文章:
public ActionResult Action1()
{
TempData["message"] = "some message";
return RedirectToAction("action2");
}
public ActionResult Action2()
{
var message = TempData["message"] as string;
return View();
}
<div><%: TempData["message"] %></div>