asp.net-mvc – 从MVC 3升级到4后,Razor帮助器方法无效
发布时间:2020-12-16 03:48:09 所属栏目:asp.Net 来源:网络整理
导读:我在App_Code目录下的文件中有一个帮助方法.该方法在MVC 3中运行得非常好,但在升级到MVC 4后却没有.它在第一个@if()块失败了…… [编辑]这看起来像是Razor引擎中的解析错误.当我的所有对象及其属性都不为null时,我得到’对象引用没有设置为对象的实例’错误.
我在App_Code目录下的文件中有一个帮助方法.该方法在MVC 3中运行得非常好,但在升级到MVC 4后却没有.它在第一个@if()块失败了……
[编辑]这看起来像是Razor引擎中的解析错误.当我的所有对象及其属性都不为null时,我得到’对象引用没有设置为对象的实例’错误.我想我必须直接去微软. [编辑]错误消息是旧的“对象引用未设置为对象的实例”.这很奇怪,因为条件中的每个对象AND属性都是有效的而不是null. @helper RenderConnectButton(System.Web.Mvc.HtmlHelper helper,ContactTwitterHandleDto contactTwitterHandle,ContactFacebookAccountDto contactFacebookAccount) { <ul class="socialMedia inlineList"> @if (contactTwitterHandle != null && contactTwitterHandle.IsValid.HasValue && contactTwitterHandle.IsValid.Value) { var tHandle = "@" + contactTwitterHandle.Handle; <li class="twitter"> <a class="btn" href="http://www.twitter.com/@contactTwitterHandle.Handle" target="_blank"> <i></i> <span class="label">@tHandle</span> </a> @if(contactTwitterHandle.FollowerCount.HasValue) { <div class="count" id="c"> <i></i> <u></u> <span class="followers" title="@contactTwitterHandle.FollowerCount.Value followers">@FollowerCount(contactTwitterHandle.FollowerCount.Value)</span> </div> } </li> <script type="text/javascript"> $("#twitter").click(function () { window.location.href = '@(helper.BuildUrlFromExpression<TenantController>(t => t.LinkTwitterAccount()))'; }) </script> } @if (contactFacebookAccount != null && contactFacebookAccount.IsValid.HasValue && contactFacebookAccount.IsValid.Value) { <li class="facebook"> <a class="btn" href="@contactFacebookAccount.Url" target="_blank"> <i></i> <span class="label">@contactFacebookAccount.Name</span> </a> @if(contactFacebookAccount.FriendCount.HasValue) { <div class="count" id="c"> <i></i> <u></u> <span class="followers" title="@contactFacebookAccount.FriendCount.Value friends">@FriendCount(contactFacebookAccount.FriendCount.Value)</span> </div> } </li> } </ul> } [UPDATE] var tLink = "http://www.twitter.com/" + contactTwitterHandle.Handle; contactTwitterHandle和contactTwitterHandle.Handle都是null. @helper RenderConnectButton(System.Web.Mvc.HtmlHelper helper,ContactFacebookAccountDto contactFacebookAccount) { <ul class="socialMedia inlineList"> @if (contactTwitterHandle != null && contactTwitterHandle.IsValid.HasValue && contactTwitterHandle.IsValid.Value) { var tHandle = "@" + contactTwitterHandle.Handle; var tLink = "http://www.twitter.com/" + contactTwitterHandle.Handle; <li class="twitter"> <a class="btn" href="@tLink" target="_blank"> <i></i> <span class="label">@tHandle</span> </a> @if(contactTwitterHandle.FollowerCount.HasValue) { <div class="count" id="c"> <i></i> <u></u> <span class="followers" title="@contactTwitterHandle.FollowerCount.Value followers">@FollowerCount(contactTwitterHandle.FollowerCount.Value)</span> </div> } </li> <script type="text/javascript"> $("#twitter").click(function () { window.location.href = '@(helper.BuildUrlFromExpression<TenantController>(t => t.LinkTwitterAccount()))'; }) </script> } @if (contactFacebookAccount != null && contactFacebookAccount.IsValid.HasValue && contactFacebookAccount.IsValid.Value) { <li class="facebook"> <a class="btn" href="@contactFacebookAccount.Url" target="_blank"> <i></i> <span class="label">@contactFacebookAccount.Name</span> </a> @if(contactFacebookAccount.FriendCount.HasValue) { <div class="count" id="c"> <i></i> <u></u> <span class="followers" title="@contactFacebookAccount.FriendCount.Value friends">@FriendCount(contactFacebookAccount.FriendCount.Value)</span> </div> } </li> } </ul> } 解决方法
我找到了解决这个问题的方法,但首先是一段历史.对于这个特定的MVC项目,我们决定逐渐开始实施Razor.该应用程序有很多“模态”区域,通过进行AJAX调用来获取局部视图.这些部分视图是第一个作为Razor视图实现的视图.后来,我们想使用Razor局部视图在标准ASPX视图页面中实现一个新功能,但是ASPX视图引擎无法呈现部分Razor视图,因此我在App_Code文件夹中添加了一个MVC帮助文件,而不是使用Razor视图.一种呈现该功能的方法.此方法是升级到MVC4后导致错误的原因.具有此方法呈现的功能的页面正在转换为Razor视图页面,因此我今天意识到我需要做的就是将代码从该方法移动到Razor局部视图中.这解决了这个问题,但是,我仍然认为这是Razor引擎中用于使用辅助方法渲染的错误.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- CKEditor与CKFinder的配置
- 初识ABP vNext(5):ABP扩展实体
- 我需要为ASP.NET 4网站提供额外的XSS安全性吗?
- asp.net-mvc-3 – ASP.NET MVC3项目并不总是发布所有的视图
- asp.net-mvc – 如何绘制密码字段就像我们绘制Ember.TextFi
- asp.net-mvc – 迷你探查器不显示ajax请求信息?
- ASP.NET MVC – 用于编辑的ViewModels
- asp.net – ASP:NET确认密码字段
- asp.net-core – 如何在我的ASP.NET核心WebApi项目中全局启
- macos – ASP.NET CORE 2.1预览“Csc”任务不支持“SharedC
推荐文章
站长推荐
- asp.net-core – 如何在aspnet核心应用程序中为静
- 新单词 part 15
- asp.net-mvc – 如何将模型传递给部分视图
- asp.net – SmtpClient.SendAsync调用自动取消
- asp.net-mvc – 与Microsoft HTTP Client Librar
- asp.net – 使用AJAX进行WCF调用
- asp.net – SimpleMembership向经过身份验证的用
- asp.net-web-api – Structure Map无参数构造函数
- ASP.NET站点.将整个域从http重定向到https
- asp.net-mvc – 用于移动设备的displaymode,带有
热点阅读