C# 如何在母版页中按名称呈现局部视图

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;

我正在尝试实现类似RubyonRail的东西,以便将消息传递到下一个页面请求。我想要采取的方法是在会话上下文中存储一对(部分视图名称、模型对象),并在呈现显示flash消息的请求时在母版页中呈现它

在我的
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>