У меня есть форма/представление, представляющее строго типизированную модель, содержащую простые свойства и свойство IEnumerable. Я использую шаблон редактора для свойства IEnumerable моей модели.
for (int i = 0; i < @Model.Items.Count(); i++)
{
@Html.EditorFor(model => @Model.Items[i])
}
Теперь шаблон выглядит следующим образом:
@using (Html.BeginCollectionItem("Items"))
{
<table style="width: 100%">
<tr>
<td>
@Html.TextBoxFor(model => @Model.ID, new {id = "ID" })
</td>
<td>
@Html.TextBoxFor(model => @Model.Description, readonly="readonly", new {id = "Description" })
</td>
<tr />
<a role="button" id=getDescBtn>
</a>
</table>
}
И сценарий моего шаблона:
<script type="text/javascript">
$(document).ready(function() {
$("#getDescBtn").on('click', function (event) {
$.ajax({
url: '@Url.Action("LoadDescription")',
async: false,
cache: false,
data: {id: $("#ID").val()}
}).success(function (partialView) {
});
});
});
Now, My controller action looks like:
public ActionResult LoadDescription(string id)
{}
Теперь предположим, что у меня есть два шаблона: в первом текстовое поле идентификатора содержит значение «1». Во втором текстовом поле идентификатора содержится значение «2».
Когда я нажимаю кнопку в первом шаблоне, я дважды получаю действие контроллера, оба со значением «1» (из первого шаблона). Когда я нажимаю кнопку во втором шаблоне, я попадаю в действие контроллера один раз, со значением "1" (из первого шаблона, хотя я нажимал кнопку второго шаблона).
Теперь то, чего я пытаюсь добиться, логически довольно просто: нажмите кнопку в первом шаблоне, один раз перейдите к действию контроллера со значением «1».
нажмите кнопку во втором шаблоне, один раз перейдите к действию контроллера со значением «2».
Кроме того, действие в контроллере отвечает за вычисление значения для описания, а затем заполнение поля описания. Что должен возвращать метод действия (я не думаю, что мне следует выполнять публикацию для всей формы) и как мне получить это в функции успеха при использовании Ajax? Спасибо за любую помощь.
id
. Удалитеnew {id = "ID" }
иnew {id = "Description" }
из помощников (помощники сгенерируют для вас правильные атрибутыid
) и удалитеid=getDescBtn
из кнопки и используйте имя класса. - person   schedule 23.06.2015