2013-03-06 2 views
2

이것은 매우 단순 해 보이지만 어디에서나 검색했으며 쉬운 방법을 찾을 수 없습니다. 검색 버튼이있는 텍스트 상자가 있고 텍스트 상자에있는 값과 일치하는 값을 데이터베이스에서 검색 할 작업 결과를 호출합니다. 모든 것은 내 작업 결과 (자바 스크립트 클릭 기능 내의 면도기에서 호출 됨)가 텍스트 상자 (var 정책)에있는 매개 변수를 필요로하고 내 면도기 작업 결과 호출 내에서 그 값을 사용할 수있는 방법을 찾을 수 없다는 점을 제외하고는 모두 예상대로 작동합니다.Javascript var as Razor parameter

이것은 내 텍스트 상자와 그것을 처리하는 javascript입니다. "PolicyNum ="나는 "VAR 정책"의 값을 전달하기 위해 노력하고있는 곳입니다

텍스트 상자 :

<span class="k-textbox k-space-right" style="width: 185px"> 
    <input id="polText" type="text" /> 
    <a id="polSearch" href="#" class="k-icon k-i-search">&nbsp;</a> 
</span> 

자바 스크립트 :

$(function() { 
    $("#polSearch").click(function() { 
     var policy = $("#polText").val(); 
     location = '@Url.Action("SearchByPolicy", new { policyNum = })'; 
    }); 
}); 

이 코드는 내 기본보기에 있습니다 .

+2

을 설정할 수 없습니다? 자바 스크립트가 필요하지 않습니다. – jrummell

+0

다른 사람들이 면도기가 html보다 먼저 렌더링된다고 말하는 것이 옳은 것은 아닙니다. 이것은 링크에서 작동하지만 여전히 매개 변수를 가져와야합니다. – aw04

+0

실제로 Razor는 html과 javascript를 서버에 렌더링 한 다음 브라우저로 보내 파싱, 실행 및 표시합니다. – jrummell

답변

2

당신이 원하는 방식으로 달성하지 못할 것입니다. 혼란은 이해할 수 있습니다. 면도기 변수는 HTML과 JS가 실행되기 전에 렌더링됩니다. 당신은 할 것

는 URL 접근

$(function() { 
    $("#polSearch").click(function() { 
     var policy = $("#polText").val(); 
     location = '{Controller}/SearchByPolicy/" + policy'; 
    }); 
}); 
0

면도날은 JS 클라이언트 측 serverside를 실행합니다. Razor에서 매개 변수없는 URL을 제공하고 JS를 사용하여 ID를 설정해야합니다. 다음과 같이하십시오 :

location = '@Url.Action("SearchByPolicy")' + policy; 
1

대신 a 요소의 사용 Html.ActionLink를 사용하여 더 나은 서버가 될 것입니다.

@Html.ActionLink("Action", "Controller", 
    new { policy = ""}, 
    new { id = "polSearch", class="k-icon k-i-search"}) 

스크립트는 단순히 액션 URL에`href`을

$(function() { 
    $("#polSearch").click(function() { 
     var policy = $("#polText").val(); 
     location = $(this).attr("href"); 
    }); 
}); 
+0

영리하다. pre-render icky를 다룹니다. –