我有一个 MVC 视图页面,强类型为枚举产品列表。每个列表项都有一个带有唯一 id 的 Html.ActionLink。在我的 jquery 文件中,我有一个 $.ajax 函数,它应该处理具有相应 id 的链接。目的是在同一页面上加载包含该项目信息的部分视图,以允许对已单击的任何项目进行编辑。我不希望操作者生成一个单独的页面,或者生成一个到服务器的帖子。
// 这里是 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>
}
现在,当我有硬编码的 ID 时,下面的工作按预期工作:
$('#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;
});
});
我知道必须有一个简单的解决方案。提前感谢您的帮助。