我有以下情况:
@model IEnumerable<UI.Models.Customer>
@grid.GetHtml(
columns: grid.Columns(
grid.Column(
format: @<text>
@Html.ActionLink("Edit", "EditAct", ???)
</text>
),
grid.Column(
format: @<text>
@Html.TextBox("Name", (string)item.Name)
</text>
)
)
)
模型只是一个由3个客户组成的列表(客户是一个只有2个属性的虚拟类,即ID和名称)
现在,我希望能够在控制器操作“EditAct”中捕获用户想要编辑的客户。那些东西,我拼命尝试没有成功:
1)我试着填写???用
new {customer: item}
并以这种方式在控制器中捕获它:
public ActionResult SampleFormParams(Customer customer) {...}
这种方法不起作用,因为HTML锚链接使用GET,我们无法使用GET发送对象。
2)它试图填写???用
new {customer: jsSerializer.Serialize(item)}
并以这种方式在控制器中捕获它:
public ActionResult SampleFormParams(String customer) { //deserialize(customer) }
这也行不通,因为“item”不是Customer对象,而是WebGridRow对象。
3)它试图填写???用
new {customer: item.ID}
并以这种方式在控制器中捕获它:
public ActionResult SampleFormParams(int id) { ... }
我想知道是否可以访问整个IEnumerable模型,以便我可以使用给定的ID在模型中找到指定的客户?
所以问题是,有没有办法,我可以直接访问模型,只需一个锚即ActionLink - 不使用表格&gt;并且不使用Ajax?
我还检查了自定义模型活页夹,但它也基于表单&gt;。
答案 0 :(得分:0)
不是手动生成编辑链接,而是使用名为getselectlink的开箱即用的网格扩展。这是一个样本:
grid.Column(
header:"",
format:@<text>@item.GetSelectLink("Edit")</text>
),