【问题标题】:Asp.net MVC 2: Can Ajax.ActionLink pass a parameter without it going into the url?Asp.net MVC 2:Ajax.ActionLink 可以在不进入 url 的情况下传递参数吗?
【发布时间】:2010-01-23 23:11:31
【问题描述】:

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

<%= 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 的形式出现

如果有任何影响,此操作也将返回部分视图。

【问题讨论】:

    标签: c# asp.net-mvc ajax


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果你想将模型发送到控制器而不是 Ajax.ActionLink 使用 Ajax.BeginForm

      【讨论】:

      • 所以我可以在不进入 url 的情况下以这种方式发送数据?
      • 是的,使用 Ajax.BeginForm 页面不会回发,也不需要链接,只需将场景背后的数据发布到服务器并回复。
      猜你喜欢
      • 2020-12-12
      • 2012-05-20
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多