RouteUrl/javascript错误

RouteUrl/javascript错误,javascript,asp.net-mvc,Javascript,Asp.net Mvc,对于以下代码,我得到错误“名称fn在当前上下文中不存在”。错误发生在页面加载和代码的最后一行: <script language="javascript" type="text/javascript"> function RunAdvancedSearchClicked() { var fn = $("#FirstName").val(); var ln = $("#LastName").val(); var ssn = $("

对于以下代码,我得到错误“名称fn在当前上下文中不存在”。错误发生在页面加载和代码的最后一行:

<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>

函数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});
}
@Url.RouteUrl()在客户端执行之前呈现标记(在服务器上)时执行

您可以在服务器上生成部分链接,然后在javascript中追加该值:

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

这是一个XSS漏洞。您不能像这样混合使用服务器端代码和客户端变量。@SLaks-Ah。那么,构建这个字符串的最佳方法是什么?我想我以前见过在特殊字符串上进行搜索和替换。@SLaks您是第一个让我走上解决此问题的轨道的人。如果你想正式给出答案,我很乐意将其标记为答案。