我对 MVC 很陌生,所以这可能是一个非常新手的问题。我正在玩产品目录。我有一个要以表格格式(表格或 div)显示的产品列表。每行将显示一个产品信息,并有两个链接“编辑和删除”。我想使用 Jquery Ajax 向我的控制器提交请求。对于编辑,我想显示一个模式对话框。为了删除,我想从目录中删除产品。每一项操作都将在完成后更新网格。
这是一些伪代码:
模型:
public class ProductModel
{
public string Name { get; set; }
public string Description { get; set; }
public int Id { get; set; }
public bool IsReadOnly { get; set; }
}
控制器:
public class ProductController : Controller
{
//
// GET: /Product/
public ActionResult Edit(ProductModel product)
{
}
public ActionResult Delete(ProductModel product)
{
}
}
编辑视图:
@model Generic.Controller.Models.ProductModel
if Model.IsReadOnly
Render display editor
else
Render editor
列表显示:
@model Generic.Controller.Models.ProductModel
@using (Html.BeginForm())
{
//for each model item
<div class="some-css">
<div class="column-div">
//display the model
</div>
<div class="column-div">
//display the edit link
</div>
<div class="column-div">
//display the delete link
</div>
</div>
}
替代列表视图 - 从列表视图呈现的部分视图
//对于每个模型:
@using (Html.BeginForm()) //id this form with the product id?
{
//for each model item
<div class="some-css">
<div class="column-div">
//display the model
</div>
<div class="column-div">
//display the edit link
</div>
<div class="column-div">
//display the delete link
</div>
</div>
}
这是一些骨架Javascript:
var open = function (methodName, url) { $("#dialogDiv").dialog({ buttons: { Save: function () { var form = $(options.formToPost); $.ajax({ type: "POST",
这里有什么?通常我可以:
url: form.attr('action'),
data: form.serialize()
但这是否意味着每个实体都有一个表格?
success: function (data, status, xhr) {
if (data.IsValid) {
//how do I identify the div I need to update?
} else {
}
}
});
},
Cancel: function () {
$("#dialogDiv").dialog('close');
$("#dialogDiv").empty();
}
}
});
$.ajax(
{
Type: methodName,
url: url,
success: function (data, status, xhr) {
openDialog(data);
}
});
function openDialog(data) {
$("#dialogDiv").html(data);
$("#dialogDiv").dialog('open');
}
};
return {
open: open
};
以下是我的问题:
- 现在我唯一知道如何轻松发布的是表格。为了向我的控制器发布 ajax 请求,我是否必须有多个表单(每个产品 1 个)?
- 如果我使用 JQuery 找到与单击的链接最近的 div 并将其发送到控制器,模型绑定器会自动将 div 的内容绑定到我的 ProductModel 吗?
- 编辑或删除产品后更新视图的最佳方式是什么?
谢谢,