【问题标题】:Razor jQuery conflict:剃刀 jQuery 冲突:
【发布时间】:2014-12-29 16:55:25
【问题描述】:

所以我的 .cshtml 文件中有这个源代码:

@if (Model.IsAdmin) 
   {
        $("#back-button").click(function () {
            window.location.href = "@(Url.Action("ChooseEvent", "Console", new RouteValueDictionary { { "eventId", Model.EventId } }))";
        });
}

这似乎导致各种构建时间错误出现在我的 VS2010 IDE 中,从“)预期”到“意外字符 '$'”。

我试过像这样包装'$':

<text>$("#back-button")</text>.click(function () {
   window.location.href = Url.Action("ChooseEvent", "Console", new RouteValueDictionary { { "eventId", Model.EventId } });
});

但这会导致在第一个大括号上出现关于 ") expected" 的错误。

这是来自我正在尝试转换为 Razor 的旧 .aspx 文件。原始来源如下所示:

<% if (Model.IsAdmin) 
   { %>
        $("#back-button").click(function () {
            window.location.href = "<%= Url.Action("ChooseEvent", "Console", new RouteValueDictionary { { "eventId", Model.EventId } }) %>";
        });
<% } %>

jQuery 和 Razor 不为我合作。

如何克服这些错误?

【问题讨论】:

  • 而不是使用jquery,你为什么不使用html helper 来代替呢?在你放置 id="back-button" 的位置,将其改为 @Html.ActionLink("","")?

标签: jquery .net asp.net-mvc razor razorengine


【解决方案1】:

您可以使用 @: 从 razor 切换回 HTML

我认为@: 可能只适用于单行,因此您可能需要在其中每行添加一个:

例如

@if (Model.IsAdmin) {
        @:$("#back-button").click(function () {
        @:window.location.href = '@Url.Action("ChooseEvent", "Console", new RouteValueDictionary { { "eventId", Model.EventId } })';
        @:});
}

【讨论】:

    【解决方案2】:

    这行得通:

    @if (Model.IsAdmin) 
       {
            <text>$("#back-button").click(function () {
                window.location.href = '@Url.Action("ChooseEvent", "Console", new RouteValueDictionary { { "eventId", Model.EventId } })';
            });</text>
    }
    

    我不能在这里为 JavaScript 加上 @ 前缀(就像调用 JavaScript 函数 @myJavaScriptFunction 时一样),所以我不得不使用更麻烦的符号。

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2011-07-01
      • 2012-06-30
      相关资源
      最近更新 更多