2013-02-07 37 views
0

對於以下代碼,我收到錯誤「名稱fn在當前上下文中不存在」。該錯誤是發生在頁面加載並在此代碼的最後一行:RouteUrl/javascript錯誤

<script language="javascript" type="text/javascript"> 
    function RunAdvancedSearchClicked() { 
     var fn = $("#FirstName").val(); 
     var ln = $("#LastName").val(); 
     var ssn = $("#SSN").val(); 
     var doi = $("#DateOfInjury").val(); 

     document.location = '@Url.RouteUrl("ClaimSearch", new { action = "Search", firstName = fn, lastName = ln, dateOfInjury = doi, carrier = ViewBag.Carrier })'; 
    } 
</script> 
+1

這是一個XSS漏洞。 – SLaks

+0

您不能混合使用服務器端代碼和客戶端變量。 – SLaks

+0

@SLaks啊。那麼建立這個字符串的最好方法是什麼?我想我以前看過特殊字符串的搜索和替換。 – birdus

回答

0

@ Url.RouteUrl()被執行時,標記被渲染(在服務器上)在客戶端執行之前。

你可以在服務器上生成的鏈接的一部分,然後在javascript附加價值:

var url = '@Url.RouteUrl("ClaimSearch", new { action = "Search", lastName = ln, dateOfInjury = doi, carrier = ViewBag.Carrier })'; 
document.location = url + '&firstName=' + fn;