我有以下表格,我将项目添加到列表并更新结果表。所以这是我目前拥有的代码:
查看(强类型):
@using (Ajax.BeginForm("AddService", "Manager",
new AjaxOptions { UpdateTargetId = "servicePartial",
HttpMethod = "Post",
LoadingElementId = "loading" }))
{
<input type="submit" value="Add New" />
<div class="widget-content table-container" id="servicePartial">
@Html.Partial("_Services", Model)
</div>
}
部分的:
@model Project.Model.ServicesViewModel
<table id="demo-dtable-02" class="table table-striped">
<thead>
<tr>
<th>Service</th>
<th>Price</th>
<td class="action-col">Actions</td>
</tr>
</thead>
<tbody id="services">
@if (Model != null)
{
if (Model.Services != null)
{
if (Model.Services.Count > 0)
{
for (int i = 0; i < Model.Services.Count; i++)
{
<tr>
<th>@Model.Services[i].name</th>
<th>@Model.Services[i].price</th>
<td class="action-col">
@Html.HiddenFor(x=>x.Services[i].name)
@Html.HiddenFor(x=>x.Services[i].price)
@Html.HiddenFor(x=>x.Services[i].serviceId)
@Ajax.ActionLink(" X ", "Appointment", "Manager",
new{ model = Model,
id = @Model.Services[i].serviceId },
new AjaxOptions
{
UpdateTargetId = "servicePartial",
LoadingElementId = "loading",
HttpMethod="Post"
})
</td>
</tr>
}
}
}
}
</tbody>
</table>
视图模型:
public class ServicesViewModel
{
public List<Service> Services { get; set; }
}
现在,通过Ajax.Beginform
作品的提交按钮发回,我可以发回模型并更新服务(添加一个)并返回它。
我的问题是我也希望能够从列表中删除服务。为此,我想我会使用 aAjax.Actionlink
并且它确实使用 id 发回。问题是它只返回 id 而不是模型。
现在环顾四周,显然不可能使用Ajax.Actionlink
你们将如何处理这个问题将当前模型发送回操作?
我以为我会很聪明,并使用重载Ajax.Actionlink
并添加
new{ model = Model, id = @Model.Services[i].serviceId }
到它,但它不行。
ViewModel 中还有很多其他数据(为了空间,我已将其从上述代码中取出),通过上述重载将所有这些数据一一发送对我来说是非常不切实际的。