1

我想创建一个带有子博客的博客。每个子博客在模型中都有它自己的“主题”变量,它会改变主题。我尝试将主题变量传递给 _ViewStart.vbhtml 页面,如下所示:

@代码

@((@ViewBag.Theme.length > 0) ? Layout = @ViewBag.Theme : Layout = "~/Views/Shared/_Layout.vbhtml")
     End Code

但是,我收到一个错误:

说明:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:BC30201:预期表达式。

源错误:

第 5 行:*@ 第 6 行:第 7 行:@((@ViewBag.Theme.length > 0) ? Layout = @ViewBag.Theme : Layout = "~/Views/Shared/_Layout.vbhtml") 第 8 行:第 9 行: 结束代码

源文件:C:\Users\darchual\documents\visual studio 2010\Projects\GemcoBlog\GemcoBlog\Views_ViewStart.vbhtml 行:7

如何更改模板,有更好的方法吗?

4

1 回答 1

0

试试看

@{
    Layout = (ViewBag.Theme.length > 0) ? ViewBag.Theme : "~/Views/Shared/_Layout.vbhtml"
}

就像一个警告一样,如果主题为空,那么长度将失败。可以做得更好

@{
    Layout = !String.IsNullOrWhiteSpace(ViewBag.Theme) ? ViewBag.Theme : "~/Views/Shared/_Layout.vbhtml"
}

编辑:仅作记录,是的,在您链接的答案(stackoverflow.com/questions/5059323)中设置不同的视图是更好和正确的方法,但请注意,如果您想坚持您的方法,这适用于我:

@{
    Layout = !String.IsNullOrWhiteSpace((String)ViewContext.ViewData["Theme"]) ? (String)ViewContext.ViewData["Theme"] : "~/Views/Shared/_Layout.cshtml";
}
于 2012-07-26T15:22:38.020 回答