ASP.NET MVC 4通过ActionLink传递对象变量

时间:2013-10-14 11:29:18

标签: asp.net-mvc-4 razor html.actionlink

我有一个ASP.NET MVC 4应用程序。我的应用程序中有一个剃刀视图,它使用List类型作为模型。

@model List<MeetingLog.Models.UserModel>

@{
    Layout = null;
}
.
.
.

我正在迭代模型变量,如下所示:

@foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @item.Name
                        </td>
                        <td>
                            @item.Surname
                        </td>
                        <td>
                            @Html.ActionLink("Click", "SavePerson", "Meeting", new {model = item, type = "coordinator"}, null)
                            @Html.ActionLink("Click", "SavePerson", "Meeting", new {model = item, type = "participant"}, null)
                        </td>
                    </tr>
                }

我需要将两个变量传递给具有操作链接的SavePerson操作。第一个是当前的UserModel,第二个是名为type的字符串变量。但在我的行动中,第一个参数是null。但字符串参数正确。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

您无法通过查询字符串传递实例复杂类型。这是使用它的方式:

@Html.ActionLink("Click", "SavePerson", "Meeting", new {x = item.x, y = item.y, ..., type = "participant"}, null)

答案 1 :(得分:4)

我使用ajax调用

$('.btnSave').on('click', function(){
    $.ajax({
        url: '@(Url.Action("SavePerson", "Meeting"))',
        type: 'post',
        data: {
            Value1: 'Value1',
            Value2: 'Value2'
        },
        success: function (result) {
            alert('Save Successful');
        }
    });
});

然后按下按钮点击或点击链接,如果你想要href =#希望这有帮助。

答案 2 :(得分:1)

当您编写传递的值(new {})时,您实际上可以,这有点奇怪 你要做的就是把它作为你正在构建的新对象传递给它,最终成为:

@Html.ActionLink("Link Name", "LinkActionTarget", new Object{model = item, type ='Coordinator'}

其中Object是对象的名称,而model和type是该对象的属性