짧은 대답은 입니다. 너는이 될 수 없습니다. 클라이언트 측 처리와 서버 측 처리를 혼합하려고합니다. 이것은 단순히 불가능합니다.
onDropDownChanged
기능은 사용자가 수행 한 작업 후에 실행됩니다. 즉, Razor 엔진은 이미 .cshtml
개의 파일을 구문 분석하고 HTML 코드를 클라이언트에 보냈습니다. 이는 다시 ViewBag
개체를 포함하는 명령이 이미 실행되었음을 의미합니다.
지금, 귀하의 ViewBag
에 무엇이 포함되어 있는지 정말로 모르겠습니다. 따라서 일부는 string
(값)이고, 속성 이름은 dropdownlist
에 옵션으로 저장되었다고 가정합니다. dropdownlist
에서 선택한 내용을 토대로 ViewBag
의 데이터에 액세스하려고합니다. , 컨트롤러에서
- 열쇠는 당신이 필요로하는 무엇이든
dropdownlist
의 값과 값을, 존재와 사전을 만들; :이 경우, 다음을 수행해야합니다 ,보기에서 ViewBag
- 에서이 사전을 저장 JSON 문자열로 사전을 변환하고, 같은 키
onDropDownChanged
이벤트에서
- 의 객체를 얻기 위해 그것을 클라이언트 측을 구문 분석, 단지
text
선택을 사용하여이 개체에 액세스 원하는 값을 얻기 위해서.
귀하의 질문은 약간 모호합니다. 따라서 귀하가 필요로하는 것이 100 % 확신 할 수 없습니다. 결론적으로 서버 쪽 코드와 클라이언트 쪽 코드를 이렇게 섞을 수는 없습니다. 속임수에 의존해야합니다.
편집 : 다음은 유용한 비법입니다. 보기에서 ViewBag
직렬화하고 값을 JavaScript 변수에 저장하십시오. 텍스트를 객체로 파싱한다. 이제 JavaScript를 사용하여 반복 할 수 있습니다. 다음과 같이
<script>
var tmpViewBag = '@Html.Raw(Json.Encode(ViewBag.MyObject))'; //notice I'm using ' and not "
var myOptions = [];
$(document).ready(function() {
myOptions = JSON.parse(tmpViewBag); //you now have the object array
})
</script>
는 select 이벤트 내부에서 이제 객체 배열을 사용할 수 있습니다
function onDropDownChanged(e) {
var text = $("#TestMethodId").data("kendoDropDownList").value();
//alert(text);
for (var i = 0; i < myOptions.length; i++) {
if (myOptions.TestName === text) { //it can as well be ".TestId"
$("#mytextbox").value(myOptions.PassThreshold); //you can set whatever you want
break;
}
}
}
당신은 이것에 대한 대안을 제안 할 수 있습니다. 내 뷰백으로 데이터가 지속됩니다. 선택 변경에 나는 단지 뷰백 내용을 반복하고 텍스트 상자 값을 채울 필요가있다. –
@SantoshNavle, 내가 작성한 답변에서 모든 가능한 값으로 사전을 만들 수 있습니다. 이것은 물론 값의 합리적인 목록이 적은 경우에만 작동합니다. 이 사전을 JavaScript 객체로 변환하십시오. 그런 다음이 객체는 드롭 다운 값을 사용하여 반복 또는 직접 액세스 할 수 있습니다. –
직렬화 된 뷰백의 값은 다음과 같습니다. [{ "TestId": 1, "TestName": "마커", "PassThreshold": 4, "FailThreshold": 4}, { "TestId": 2, "TestName ":"ABC ","PassThreshold ": 5,"FailThreshold ": 5}, {"TestId ": 3,"TestName ":"VI ","PassThreshold ": 6,"FailThreshold ": 6}] 지금 드롭 다운 값이 선택되면 '1'이라고 말하십시오. TestId = 1 (선택한 드롭 다운 값)에 대한 통과 임계 값을 가져와 그리드의 텍스트 상자 (예 : 4)에 표시해야합니다. 이제는 분명히 이해되기를 바랍니다. –