Asp.net MVC 2:Ajax.ActionLink可以传递参数而不进入url吗?

时间:2010-01-23 23:11:31

标签: c# asp.net-mvc ajax

我在局部视图中有以下内容

<%= Ajax.ActionLink("Plunder Again", "Resources", new { controller = "Resource", parent = Model.ToJson() }, new AjaxOptions { UpdateTargetId = Model.ResourceType })%>

转到控制器方法:

    public ViewResult Resources(/*ModelResource parent*/)
    {
        Debug.Assert(Request.Params["parent"]!=null);
        var jss=new System.Web.Script.Serialization.JavaScriptSerializer();
        var parent=jss.Deserialize<ModelResource>(Request.Params["parent"]);
        return View(parent.PlunderAmount);
    }

但它抛出一个异常,因为json没有正确通过url传递,它找不到'Type'参数。

我尝试将ModelResource作为Action的参数,但它以null

的形式出现

如果这有任何意义,此行动也将返回部分视图。

2 个答案:

答案 0 :(得分:0)

ActionLink用于创建URL的锚点 - URL必须有效!通常,您不会将整个对象传递给Action,因为路径值必须绑定回模型并传递给操作。您可以传递对象的ID,因此Action可以使用该键获取对象。

答案 1 :(得分:0)

如果要将Model发送到控制器而不是Ajax.ActionLink,请使用Ajax.BeginForm