У меня есть страница просмотра MVC, строго типизированная для списка нумерованных продуктов. Каждый элемент списка имеет Html.ActionLink с уникальным идентификатором. В моем файле jquery у меня есть функция $ .ajax, которая должна обрабатывать ссылку с соответствующим идентификатором. Цель состоит в том, чтобы загрузить частичный вид на той же странице с информацией этого элемента, чтобы разрешить редактирование любого элемента. Я не хочу, чтобы actionr приводил к отдельной странице или создавал сообщение на сервере.Pass ID в Html.ActionLink через ajax, чтобы получить частичный вид
// здесь материал MVC
@model IEnumerable<SimpleAjax.Models.Product>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.ActionLink("Edit", "ShowEdit", "Home", new { id=item.Id } ,new { id = "btnShowEdit" + item.Id, @class= ".button_action"})
|
</td>
</tr>
}
<div id="showEditProd">
</div>
//inside controller
public ActionResult ShowEdit(int id)
{
Product prod = db.Product.Find(id);
ProductViewModel viewModel = new ProductViewModel
{
EditProduct = prod
};
return PartialView(viewModel);
}
//inside a separate partial view page
@model SimpleAjax.Models.ProductViewModel
@using (Html.BeginForm("Index_AddItem", "Home", FormMethod.Post, new { id = "fid" }))
{
<div>
@Html.LabelFor(model => model.EditProduct.Name)
@Html.EditorFor(model => model.EditProduct.Name)
</div>
<div>
@Html.LabelFor(model => model.EditProduct.Price)
@Html.EditorFor(model => model.EditProduct.Price)
</div>
<div>
<input type="submit" value="Submit" />
</div>
}
в настоящее время ниже работает как и ожидалось, когда я жёстко идентификаторы:
$('#btnShowEdit1,#btnShowEdit2,#btnShowEdit3').click(function() {
$.ajax({
url: this.href,
contentType: 'application/html; charset=utf-8',
type: 'GET',
success: function (result) {
$('#showEditProd').html(result);
}
});
return false;
});
выше JQuery работает по желанию. Частичное представление загружается на ту же страницу, что и список с перечислением. Но, очевидно, я не хочу перекодировать переменные. У меня может быть x число #btnShowEdit. Я хочу использовать класс, правильно? Поэтому у меня есть класс .button_action, который перечислит Id. Но когда я это делаю, как показано ниже, ссылка переходит на отдельную страницу.
они идут на отдельную страницу, а не то, что я хочу
$('.button_action').click(function (index) {
$.ajax({
url: this.href,
contentType: 'application/html; charset=utf-8',
type: 'GET',
success: function (result) {
$('#showEditProd').html(result);
}
});
return false;
});
});
//also tried this...
$('.button_action').each(function (index) {
$('#btnShowEdit' + index).click(function() {
$.ajax({
url: this.href,
contentType: 'application/html; charset=utf-8',
type: 'GET',
success: function (result) {
$('#showEditProd').html(result);
}
});
return false;
});
});
Я знаю, что есть, должно быть простым solution.Thanks за вашу помощь заранее.
Спасибо, но это не работает для меня это до сих пор перенаправляет на другую страницу – jfbouz23