ASP.NET MVC在布局页上使用模型(model)

看到这标题有点怪,一般情况之下,我们很容易在视图与部分视图中使用模型(model),但是如果想在布局页_Layout.cshtml页中使用模型(model),按照普通方式也许没有达到预期的效果,在实现时有些情况需要注意的。

下面先按原先我们的设计,在控控制器创建三个视图操作(Action):
ASP.NET MVC在布局页上使用模型(model)

创建一个布局页_May15.cshtml,然后上面的三个视图均引用此布局页.
ASP.NET MVC在布局页上使用模型(model)

现在我们根据控制器的Action分别创建三个视图,Index.cshtml:
ASP.NET MVC在布局页上使用模型(model)

PageA.cshtml:
ASP.NET MVC在布局页上使用模型(model)

PageB.cshtml:
ASP.NET MVC在布局页上使用模型(model)

OK,现在我们回至_May15.cshtml写model代码,添加下面标记1至标记3:
ASP.NET MVC在布局页上使用模型(model)

现在我们分别浏览视图Index.cshtml,PageA.cshtml和pageB.cshtml:
ASP.NET MVC在布局页上使用模型(model)

ASP.NET MVC在布局页上使用模型(model)

ASP.NET MVC在布局页上使用模型(model)

为什么视图Index.cshtml能正常显示,而PageA与PageB不能呢? 回过头去看控制器,只有Index控制器有返回return View(xxx):
如果三个控制器使用相同的代码,肯定是没有问题,对吧:
ASP.NET MVC在布局页上使用模型(model)

但是实际上,我们不能这样去做,因为不同的视图,就是想表现不同的内容。这就是我们需要解决的地方。

下面是Insus.NET解决的方法,控制器中把三个操作改为:
ASP.NET MVC在布局页上使用模型(model)

接下来,我们只去修改布局页_May15.cshtml:
ASP.NET MVC在布局页上使用模型(model)

完成了,看到上面的代码了吧,就是这两行代码。其它视图均无需修改任何,它原本是怎样写,就是怎样写。
现在我们浏览三个视图,肯是没有问题的:
ASP.NET MVC在布局页上使用模型(model)

上一篇:linux虚拟机环境快速搭建redis5.x版本的主从集群总结


下一篇:C#学习笔记(九)CSharp表达式与语句(一)