ASP.NET MVC:在不使用表单和Ajax的情况下访问控制器中的绑定模型

时间:2014-04-24 10:06:35

标签: asp.net .net asp.net-mvc

我有以下情况:

@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;。

1 个答案:

答案 0 :(得分:0)

不是手动生成编辑链接,而是使用名为getselectlink的开箱即用的网格扩展。这是一个样本:

grid.Column(
            header:"", 
            format:@<text>@item.GetSelectLink("Edit")</text>
            ),