所以我在我的.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时一样),所以我不得不使用更繁琐的符号。