Razor jQuery conflict:



所以我在我的.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 } });
});

但这会导致第一个大括号上出现"预期"的错误。

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

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

jQuery和Razor不合作。

如何克服这些错误?

您可以使用

@:从 razor 切换回 HTML

我认为@:可能仅适用于一行,因此您可能需要在那里为每行添加一个:

例如

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

这奏效了:

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

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

最新更新