我想创建一个包含子博客的博客。每个子博客都会在模型中拥有自己的“主题”变量,这会改变主题。我尝试主题变量传递给_ViewStart.vbhtml页面,如下所示:VB ASP.net MVC Razor:以编程方式更改视图(模板)
@Code
@((@ViewBag.Theme.length > 0) ? Layout = @ViewBag.Theme : Layout = "~/Views/Shared/_Layout.vbhtml") End Code
但是,我得到一个错误:
说明:该请求提供服务所需资源的编译过程中出现错误。请查看以下具体的错误细节并适当修改您的源代码。
Compiler Error Message: BC30201: Expression expected.
Source Error:
Line 5: *@ Line 6: Line 7: @((@ViewBag.Theme.length > 0) ? Layout = @ViewBag.Theme : Layout = "~/Views/Shared/_Layout.vbhtml") Line 8: Line 9: End Code
Source File: C:\Users\darchual\documents\visual studio 2010\Projects\GemcoBlog\GemcoBlog\Views_ViewStart.vbhtml Line: 7
如何更改模板,有没有更好的方法?
我尝试过,但它给了我一个语法错误的“@ {”它说,“说明:维修本所需资源的编译过程中出现错误请仔细阅读以下具体的错误细节并适当修改您的源代码。“在我的VS2010中,它说:“错误'ViewBag'未被声明,由于它的保护级别,它可能不可访问。” – user1477388 2012-07-26 15:27:11
@ user1477388对不起,只是注意到你试图从无法访问ViewBag的_ViewStart中执行它。您可以使用PageData(如http://stackoverflow.com/questions/4834045/how-do-i-set-viewbag-properties-on-viewstart-cshtml中所示)或将其声明在页面的顶部(包括哪里ViewBag.Title通常被声明)。 – Manatherin 2012-07-26 15:30:17
@ user1477388在http://stackoverflow.com/questions/6578029/why-cant-viewstart-cshtml-access-the-viewbag-object中显示的另一种替代方法。您可能可以通过'ViewContext.ViewData [“Theme”]访问它' – Manatherin 2012-07-26 15:34:24