2014-12-29 34 views
0

所以我有這個源在我的.cshtml文件:剃刀jQuery的衝突:

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

但是,這導致對「預期)」第一支柱的錯誤。

這是來自舊的.aspx文件,我試圖轉換爲Razor。原始來源如下所示:

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

jQuery和Razor沒有爲我合作。

我該如何克服這些錯誤?

+0

而不是使用jQuery,爲什麼不使用html helper呢?你把id =「back-button」放在哪裏,改爲@ Html.ActionLink(「」,「」)? – jbutler483

+0

可能與此有關:http://stackoverflow.com/questions/14427364/asp-net-mvc-4-javascript-inside-razor-block-throws-error – micahhoover

回答

-1

這工作:

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

我不能@(調用JavaScript函數@myJavaScriptFunction時等),這裏的前綴JavaScript,因此我不得不使用較爲繁瑣的符號。

1

您可以從剃刀切換回@:

我認爲@:可能僅適用於單一的線,所以你可能需要添加每行有一個HTML:

例如

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