【问题标题】:<$G+$> Strange characters appearing in ASP.NET MVC5 Helper<$G+$> 出现在 ASP.NET MVC5 Helper 中的奇怪字符
【发布时间】:2013-11-26 19:08:51
【问题描述】:

视图中的我的助手,用于显示在应用程序中注册的用户的全名,以及通过 3rd 方身份验证登录的用户名。

@using MyApp.Models;

@helper GetUserName()
{
    if (User.Identity.AuthenticationType == "Application")
    {
        using (var db = new MyAppDbContext())
        {
            @db.Users.Find(User.Identity.GetUserId()).FullName
        }
    }
    else
    {
        @User.Identity.GetUserName()
    }
}

然后我使用这个助手:

@if (Request.IsAuthenticated)
{
    using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-form pull-right" }))
    {
    @Html.AntiForgeryToken()

    <ul class="nav">
        <li>
            @Html.ActionLink("Hello " + GetUserName() + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" })
        </li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
    }
}

我的用户名为 Proba234,显示如下:

为什么会出现那些奇怪的字符(&lt;$G+$&gt;),如何摆脱它们?

【问题讨论】:

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

这可能是与在 Visual Studio Page Inspector 中使用帮助程序相关的某种功能或错误,您可能不会在外部浏览器下看到这些标签。我在 VS 2013 中轻松复制了它。关于它的线程可以在例如 ASP.NET forum 上找到。

【讨论】:

  • 它确实在外部浏览器中可见。截图来自火狐。
【解决方案2】:

看起来那些有趣的字符是由助手生成的。问题似乎是帮助程序的输出不打算像常规string 一样消耗。显然它会生成一些控制字符,这些字符本来是用于 Razor 的,但如果我们尝试将输出用作常规字符串(正如 @Html.ActionLink() 期望它的参数一样),它们就会变得可见。

为了摆脱它们,我不应该在@Html.ActionLink() 中使用GetUserName() 助手,而是在控制器中获取用户名,并通过视图模型的属性传递它。反正我不应该有这种逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多