Сценарий:
У меня есть частичное представление, которое используется в нескольких местах моего приложения ASP.NET MVC. Частичное представление содержит список «объектов» для выбора, то есть что-то похожее на:
<ul>
<%
foreach (var person in Model.Persons)
{
%>
<li><a href="#" class="person">
<%= person.Name %></a></li>
<%
}
%>
</ul>
Каждый человек имеет уникальный идентификатор.
Я использую jQuery для своих материалов AJAXy, и до сих пор я добавлял функции щелчков к ссылкам следующим образом (хотя он имеет очень не-jQuery-подобный запах)
<a href="#" class="person" onclick="return selectPerson('<%= person.Id %>');">
<%= person.Name %></a>
Это работает и все, однако также требуется, чтобы я имел функцию javascript selectPerson () на каждой странице, используя это частичное представление (поскольку то, что происходит в select, является "особенным" для каждого представления).
Я только что наткнулся на метод jQuery Data () , и, похоже, он способен удовлетворить мои потребности, т. Е. В представлениях, использующих мое представление списка частичных лиц, я мог бы сделать что-то вроде:
$("a.person").click(function() { alert($(this).data("personId")); return false; });
Если у меня есть идентификатор, связанный со свойством data "personId" в элементах DOM.
Теперь у меня проблема в том, что я выполняю серверную часть рендеринга HTML, но присоединение свойства данных personId к элементам DOM должно выполняться клиентской стороной. То есть либо во время цикла foreach, либо в отдельном цикле JS, но я бы предпочел этого избежать.
Может быть, я иду по неверному пути, я не знаю, но, может быть, у кого-то есть решение для этого или, может быть, лучший подход?
Редактировать (обновлено для ясности):
Каким-то образом выполнить
$ ( выберите «текущий» якорь ). Data ("personId", установить значение person.Id );