Как передать значения модели в качестве параметров функции javascript из помощника html asp.net mvc, такого как Html.Radio? - PullRequest
5 голосов
/ 20 июля 2010

Хорошо, довольно простой вопрос.Я думаю, что мне нужно добавить несколько escape-персонажей, но я не совсем уверен, где.

Вот функция javascript, которую я пытаюсь вызвать:

function setData(associateValue, reviewDateValue) {
    var associate = document.getElementById("Associate");
    var reviewDate = document.getElementById("ReviewDate");
    associate.value = associateValue;
    reviewDate.value = reviewDateValue;
}

Вот строка asp .net mvc, где я пытаюсь создать кнопку Radio с событием click, котороевызывает вышеуказанную функцию и передает данные из модели в виде значений параметров javascript.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('<%=item.Associate%>','<%=item.ReviewDate%>' )"  } )%>

Вышеприведенное вызывает множество проблем компиляции и не работает.Вызов, подобный следующему, вызывает javascript, но не получает данные из модели.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

Мысли?

РЕШЕНИЕ

        <% String functionCall = String.Format("setData('{0}','{1}')", Html.Encode(item.Associate), Html.Encode(item.ReviewDate )) ;  %>
        <%= Html.RadioButton("Selected", item.Selected, new { onClick=functionCall  } )%>                

Ответы [ 2 ]

10 голосов
/ 20 июля 2010

Вам нужно правильно построить строку, которая представляет обработчик события onclick:

onClick = String.Format("setData('{0}', '{1}')", item.Association, item.ReviewData)
1 голос
/ 20 июля 2010

Должно быть так:

<%: Html.RadioButton("Selected", item.Selected, new { onClick="setData('" + Html.Encode(item.Associate) + "','" + Html.Encode(item.ReviewDate) + "' )"  } )%>

И если это MVC2, вы должны предпочесть использовать: вместо =, чтобы убедиться, что он закодирован в HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...