如何在MVC3 razor视图下的ViewsStart文件中设置使用两套不同的Layout布局视图
2012-08-16 14:30
701 查看
http://stackoverflow.com/questions/5161380/how-do-i-specify-different-layouts-in-the-asp-net-mvc-3-razor-viewstart-file
问题描述: 如何在同一应用程序中应用两套布局视图,两个不同控制器对应的使用两套不同的视图,如PublicControlller对应_PublicLayout而StuffController对应_StuffLayout,
如何通过在_ViewStart文件中进行相关设置使得View/Public文件夹下的文件默认使用的_PublicLayout布局页,而View/Stuff文件夹下的文件默认使用的_StuffLayout布局页。
解决方案:
1)可以在各自文件夹中放置新的_ViewStart.cshtml文件改写View文件夹下的_ViewStart并制定使用特定的_Layout布局页。如View/Public和View/stuff文件夹下各自有
自己的_ViewStart文件设置布局页面。
2)在controller下的action方法中指定使用某个布局页面,如
3)自定义一个AcitonFilter类在调用执行action时来改写使用的布局页
通过在controller下的action方法添加特性来指定选择某特定布局页
问题描述:在_ViewStart文件中使用ViewBag对象
解决方案:(可通过此方法根据特定参数来切换布局页实现多语言网站设计)
设置:ViewContext.Controller.ViewBag.StoreName = "My New Store";
使用:@ViewContext.Controller.ViewBag.StoreName
Generally, ViewData["StoreName"] is same as ViewBag.StoreName
Also, Controller.ViewData["StoreName"] = Controller.StoreName = ViewContext.Controller.ViewBag.StoreName =ViewContext.Controller.ViewData["StoreName"]
But every view and partial view gets its own instance of viewdata.
问题描述: 如何在同一应用程序中应用两套布局视图,两个不同控制器对应的使用两套不同的视图,如PublicControlller对应_PublicLayout而StuffController对应_StuffLayout,
如何通过在_ViewStart文件中进行相关设置使得View/Public文件夹下的文件默认使用的_PublicLayout布局页,而View/Stuff文件夹下的文件默认使用的_StuffLayout布局页。
解决方案:
1)可以在各自文件夹中放置新的_ViewStart.cshtml文件改写View文件夹下的_ViewStart并制定使用特定的_Layout布局页。如View/Public和View/stuff文件夹下各自有
自己的_ViewStart文件设置布局页面。
2)在controller下的action方法中指定使用某个布局页面,如
returnView("Index","~/Views/Shared/_StaffLayout.cshtml", someViewModel);
3)自定义一个AcitonFilter类在调用执行action时来改写使用的布局页
publicclassLayoutInjecterAttribute:ActionFilterAttribute { privatereadonlystring _masterName; publicLayoutInjecterAttribute(string masterName) { _masterName = masterName; } publicoverridevoidOnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); var result = filterContext.ResultasViewResult; if(result !=null) { result.MasterName= _masterName; } } }
通过在controller下的action方法添加特性来指定选择某特定布局页
[LayoutInjecter("_PublicLayout")] publicActionResultIndex() { returnView();} }
http://forums.asp.net/t/1642656.aspx/1
问题描述:在_ViewStart文件中使用ViewBag对象
解决方案:(可通过此方法根据特定参数来切换布局页实现多语言网站设计)
设置:ViewContext.Controller.ViewBag.StoreName = "My New Store";
使用:@ViewContext.Controller.ViewBag.StoreName
Generally, ViewData["StoreName"] is same as ViewBag.StoreName
Also, Controller.ViewData["StoreName"] = Controller.StoreName = ViewContext.Controller.ViewBag.StoreName =ViewContext.Controller.ViewData["StoreName"]
But every view and partial view gets its own instance of viewdata.
相关文章推荐
- 在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了
- Android 如何使用layoutopt检验布局文件是否合理
- android 中直接在布局文件中使用html 设置不同的颜色
- Android使用后自定义控件如何在该布局文件以外动态的设置自定义控件的属性
- 【layoutopt】Android 如何使用layoutopt检验布局文件是否合理
- Android 如何使用layoutopt检验布局文件是否合理
- MVC学习六:Razor布局视图之【/Views/Shared/_Layout.cshtml】
- Android 如何使用layoutopt检验布局文件是否合理
- ORACLE如何在有视图的SQL中使用hint(提示)来设置视图内的SQL查询方式
- 使用LayoutParams设置布局
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图
- 解释一下你对盒模型的理解,以及如何在 CSS 中告诉浏览器使用不同的盒模型来渲染你的布局。
- Android Training - 提升布局文件的性能(Lesson 2 - 使用include标签重用Layout)
- Android--使用LayoutInflater加载布局文件的三种方法
- 如何在 Vim 中使用模式行进行文件特定的设置
- 【layout】android布局文件 merge 标签的使用
- 如何使用Python 打开exel等各种文件或者应用,就用:os.startfile
- iOS开发的一些小技术:让UIImage有缩放功能、控制log的输出、xcode修改文件注释、随机数的使用、在UIImageView 中旋转图像、在Quartz中如何设置旋转点、创建.plist文件并存储
- PreferenceActivity中使用layout 布局文件