asp.net-mvc – 更改MVC4上的基本视图类型
我已经阅读了关于从MVC中更改基本视图类型的文章:
http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx 我遵循说明,但我的页面仍然继承自System.Web.Mvc.WebViewPage。我无法访问我的自定义视图库中定义的任何属性,并在运行时发现错误。当我使用@inherits关键字时,它会修复。 Web.config文件 <pages pageBaseType="[MyNamespace].WebViewPageBase"> <namespaces> <add namespace="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> WebViewPageBase public class WebViewPageBase : WebViewPage { public SomeType MyProperty { get; set; } public override void InitHelpers() { base.InitHelpers(); MyProperty = { foo }; } public override void Execute() { } } public class WebViewPageBase<T> : WebViewPage<T> { public SomeType MyProperty { get; set; } public override void InitHelpers() { base.InitHelpers(); MyProperty = { foo }; } public override void Execute() { } } 部分视图 @model TopMenuModel <div class="topMenu"> @MyProperty </div> 但是在我看过的帖子中,没有关于@inherits关键字的指示。有没有我想念的任何东西或任何方式使这项工作没有@inherits关键字在所有页面? 解决了: 根目录中的web.config文件不是正确的。我更改了在web目录下的web.config文件中的基本类型,它修复了。 解决方法
为什么显示两个版本的WebViewPageBase:通用和非泛型?
您只需要通用版本: public class MyWebView<T> : WebViewPage<T> { public SomeType MyProperty { get; set; } public override void InitHelpers() { base.InitHelpers(); MyProperty = new SomeType(); } public override void Execute() { } } 接着: <pages pageBaseType="MvcApplication1.WebViews.MyWebView"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> 现在在您的意见内,您将可以使用该属性: @model TopMenuModel <div class="topMenu"> @MyProperty </div> 更新: 一步一步的设置: >使用Internet模板创建一个新的ASP.NET MVC 3应用程序 namespace MvcApplication1 { public class MyWebView<T> : WebViewPage<T> { public string MyProperty { get; set; } public override void InitHelpers() { base.InitHelpers(); MyProperty = "Hello World"; } public override void Execute() { } } } >在?/ Views / web.config中设置pageBaseType属性(不要与?/ web.config混淆): <pages pageBaseType="MvcApplication1.MyWebView"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> >里面?/ Views / Home / Index.cshtml使用属性: <div> @MyProperty </div> >按Ctrl F5运行应用程序,如果一切顺利,您将会遇到一个Hello World。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我可以在asp.net mvc中拥有多个site.master
- asp.net – 将错误从HttpModule传递到MVC应用程序
- asp.net-mvc – 如何在ASP.NET MVC 3 WebGrid列名(Header)中
- asp.net-mvc – 使用部分视图进行MVC分页
- ASP.NET CORE中使用SESSION
- asp.net – 实体框架与存储过程
- asp.net-core – options的用途.AutomaticAuthenticate wit
- asp.net-web-api – ASP.NET WebApi测试 – 断言请求返回40
- asp-classic – 如何在Classic ASP中延迟响应
- asp.net – 在Visual Studio中禁用浏览器链接选项是明智的吗
- asp.net-mvc – 如何将控制器中的字符串消息传递
- 从ASP.NET执行Query时,抛出过期的异常
- asp.net-mvc – 使用jQuery ajax表单提交失败的V
- asp.net-mvc – 使用哪个:“AcceptGet,AcceptPo
- asp.net-mvc-4 – DataAnnotation Range属性的客
- ASP.NET连接字符串加密/保护
- asp.net – 在ASP MVC 6中为多个路由分配给同一个
- ASP.NET MVC 3的jquery ajax表单
- asp.net-mvc – 限制一段时间内的用户帐户注册数
- asp.net – LINQ to SQL – 如何选择特定的列和返