0

我用 Actionlink 做了桌子。Actionlink 打开新视图并作为 Action 的参数,我想发送@item - 完整对象。我怎样才能做到?

模型:

public class MyClass
    {
        //I have properties here.
    }

控制器:

public class MyController : Controller
{
    public ActionResult ActionName(MyClass tm)
        {
            //have a breakpoint here
            return View();
        }
}

看法:

<table>
    <tr>
        <th> Column title one </th>
        <th> Column title two </th>
        <th> Column title three </th>
    </tr>

@foreach (var item in @Model)
    {
        <tr>
            <td> @item.PropertyOne </td>
            <td> @item.PropertyTwo </td>
            <td> @item.PropertyThree </td>

            @if (ViewData["smth"] == "true")
                {
                    <td> @Html.ActionLink("Edit", "ActionName", "My", new { tm = @item }, null) </td>
                }
        </tr>  
    }
</table>

我需要说,一切正常,只有在单击 ActionLink 后,MyClass tm 才被保存为“null”。不是@项目。如果我不想写“param1 = @item.propertyOne, param2 = @item.propertyTwo”等,如何将其发送到 Action?

谢谢你。

4

1 回答 1

1

使用超链接 (ActionLink) 是不可能的。您作为附加路线值放置的任何内容大部分(区域除外)都将转换为查询字符串键值对。不过你有很多选择。

因为 item 是模型的一部分,因此在您的操作方法中构造,您可以:

  • 缓存 action 方法中的项目列表(可能通过MemoryCacheTempData或Redis之类的东西),以便在另一个 action 方法中使用。

  • 将项目列表存储在会话中。

  • 使用相同的检索方法(即相同的服务调用)在另一个操作方法中获取相同的项目。

于 2013-09-04T11:48:35.523 回答