【问题标题】:Is it possible pass a string from the _ViewStart file to my Layoutfile?是否可以将 _ViewStart 文件中的字符串传递给我的 Layoutfile?
【发布时间】:2013-08-06 02:08:13
【问题描述】:

我的主站点和管理区域都使用了一个布局文件。在布局中,我调用 MVCSiteMapProvider 来生成我的布局。我想做的是在 _ViewStart 文件中设置一个字符串,我可以将其传递到布局中以指定要使用的站点地图。是否可以将 _ViewStart 中的变量传递到 Layout 文件中,如果可以,如何?

【问题讨论】:

    标签: asp.net-mvc-4 razor-2


    【解决方案1】:

    您可以使用PageData。

    提供对页面、布局页面和部分页面之间共享的页面数据的类似数组的访问。

    _ViewStart

    C#

    @{
        PageData["MyString"] = "Test!";
    }
    

    VB.NET

    @Code
        PageData("MyString") = "Test!"
    End Code
    

    _布局

    C#

    @PageData["MyString"]
    

    VB.NET

    @PageData("MyString")
    

    【讨论】:

    • 使用您编写的 PageData 会给出错误“PageData 是一个属性,但用作方法。所以我不得不写它 PAgeData.Add("MyString", "Text")。我今晚下班的时候还是要在 Layout 页面上测试一下。
    【解决方案2】:

    您可以使用ViewBag。

    在viewstart中:

    @{
       ViewBag.YourString = "any string";
    }
    

    在布局中:

    @{
       var str = (string)ViewBag.YourString;
    }
    

    【讨论】:

    • 我不认为 _ViewStart 可以直接访问 ViewData。这是WebPageBase。
    • ViewBag 没有被 VS 拾取为在 _ViewStart 文件中有效,所以我认为这个选项不会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2014-11-18
    • 2012-03-20
    相关资源
    最近更新 更多