2014-11-03 46 views
0

遷移我的MVC3(CSS)項目MVC5(剃刀),我使用:Razor視圖MVC 5 JavaScript的 - 解決的document.getElementById

   <% if ((bool)this.ViewData["ReadOnly"] != true) 
        { %> 
        document.getElementById("NextAction").value = nextAction; 
        document.getElementById("VisitForm").submit(); 
       <% } else { %> 
        window.location = nextAction; 
       <% } %> 

我把它修改爲:

     @if ((bool)this.ViewData["ReadOnly"] != true) 
        { 
         document.getElementById("NextAction").value = nextAction; 
         document.getElementById("VisitForm").submit(); 
        } else { 
         window.location = nextAction; 
        } 

無法解決文檔或窗口?

回答

2

MVC使用HTML標籤自動輸入/退出模板分析。在您以前的版本中,您完全包裝在<% %>標籤中以識別服務器端解析何時應該處於活動狀態。 Razor語法不再依賴於特定的語法,而是在遇到HTML標記時退出服務器端解析,並在遇到標記的結束版本時重新輸入它。嘗試包裹裏面<text>標記你的JavaScript,以確定該原始「HTML」即將到來的模板解析器:

@if ((bool)this.ViewData["ReadOnly"] != true) 
{ 
    <text> 
    document.getElementById("NextAction").value = nextAction; 
    document.getElementById("VisitForm").submit(); 
    </text> 
} else { 
    <text> 
    window.location = nextAction; 
    </text> 
} 
2

你缺少腳本標記。像這樣:

@if ((bool)this.ViewData["ReadOnly"] != true) 
{ 
    <script> 
     document.getElementById("NextAction").value = nextAction; 
     document.getElementById("VisitForm").submit(); 
    </script> 

} 
else 
{ 
    <script> 
     window.location = nextAction; 
    </script> 

} 
+0

你最好從這個答案中刪除Stack Snippet;他們只適用於HTML,CSS和JS,而不是ASP.NET MVC。否則,很好的答案 – ArtOfCode 2014-11-03 18:22:15