我正在使用 MVC4和Razor ,并希望从视图中确定模型类型。这应该很简单,但我不能完全正确的语法。
我想这样做,所以我可以在_Layout.cshtml
页面中有条件地显示不同的标记,具体取决于当前使用的视图和模型。
一定是(我认为)某些事情:
@if (Model.GetType() == Web.Models.AccommodationModel) { // Obviously not correct
<h1>Accomodation markup here</h1>
}
任何建议都非常感谢!
答案 0 :(得分:14)
您可以使用is
关键字:
@if (Model is Web.Models.AccommodationModel) {
<h1>Accomodation markup here</h1>
}
或(uglier):
@if (Model.GetType() == typeof(Web.Models.AccommodationModel)) {
<h1>Accomodation markup here</h1>
}
答案 1 :(得分:4)
虽然你已经得到答案,但我建议你重新考虑整个概念。
您在这里做的是将通用布局与某些特定视图相结合。这些视图将来可能会发生变化,要求您更改布局,可能会有越来越多的视图或某些视图将被删除。所以你的方法打破了单一责任原则:显然,改变_layout.cshtml的原因不止一个。
如果在需要此类附加代码的视图中插入@section SomeSection { <h1>markup</h1> }
并使用@RenderSection("SomeSection")
在布局中进行渲染,或者在您想要的地方检查@if(IsSectionDefined("SomeSection"))
,该怎么办?