gpt4 book ai didi

asp.net-mvc - 从 MVC 3 升级到 4 后,Razor 辅助方法不起作用

转载 作者:行者123 更新时间:2023-12-02 23:10:06 25 4
gpt4 key购买 nike

我在 App_Code 目录下的文件中有一个辅助方法。该方法在 MVC 3 中工作得很好,但升级到 MVC 4 后就不行了。它在第一个 @if() block 失败......

[编辑] 这看起来像是 Razor 引擎中的解析错误。当我的所有对象及其属性都不为空时,我收到“对象引用未设置为对象的实例”错误。我想我必须直接去微软。

[编辑] 错误消息是旧的“对象引用未设置到对象的实例”。这很奇怪,因为条件中的每个对象和属性都是有效的且不为空。

@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> }

[更新]我稍微改变了代码,现在它更奇怪了。我在以下行遇到与上面相同的错误:

var tLink = "http://www.twitter.com/" + contactTwitterHandle.Handle; 

contactTwitterHandle 和 contactTwitterHandle.Handle 都不为 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;
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 调用来获取部分 View 来填充这些区域。这些部分 View 是第一个作为 Razor View 实现的。后来,我们想使用 Razor 部分 View 在标准 ASPX View 页面中实现一项新功能,但 ASPX View 引擎无法渲染部分 Razor View ,因此我没有使用 Razor View ,而是在 App_Code 文件夹中添加了一个 MVC 帮助程序文件:呈现该功能的方法。此方法是升级到 MVC4 后导致错误的原因。具有此方法呈现的功能的页面就是我要转换为 Razor View 页面的页面,因此我今天意识到我需要做的就是将代码从该方法移动到 Razor 部分 View 中。 这解决了问题,但是,我仍然认为这是使用辅助方法渲染的 Razor 引擎中的一个错误。

关于asp.net-mvc - 从 MVC 3 升级到 4 后,Razor 辅助方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com