【问题标题】:Passing dynamic parameters to ASP MVC using Jquery使用 Jquery 将动态参数传递给 ASP MVC
【发布时间】:2015-09-21 04:00:29
【问题描述】:

我正在尝试将动态参数从 jquery 传递到 mvc 控制器。这是我的 jquery 函数

function OpenBrowserUrl(type, params)
{
    window.open("{0}?linkType={1}&{2}".format(URL.openBrowserLinkURL, type, $.param(params)), '_blank');
}

参数会根据谁传入而有所不同。例如,它是这样的对象:var param = { P1: "Test1", P2: "Test2" }

我正在尝试在 MVC 控制器中绑定它们。这就是它现在的样子:

    public virtual RedirectResult OpenBrowserLink(object urlParameters)
    {
        IDictionary<string, object> paramsPair = new RouteValueDictionary(urlParameters);
        foreach (var item in paramsPair)
        {
            System.Diagnostics.Debug.WriteLine(item.Key);
        }
    }

但是,它没有正确绑定。值为空。在提琴手上,它是这样发送数据的:http://www.url.com?param1=1&param2=2&param3=3

知道发生了什么吗?或者有没有更好的方法来处理这个?基本上,我试图模仿 Html Helpers 发送参数的方式,并使用 JQuery 从控制器端绑定它。 HtmlHelper 示例:Html.TextboxFor(m =&gt; m.Text, new { Param1=1, Param2=2, Param3=3 });

非常感谢您的帮助

【问题讨论】:

    标签: javascript c# jquery asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    模型绑定器不起作用,因为您的 object urlParameters 没有属性。您应该创建强类型模型:

    public class UrlParamerters
    {
        public string Param1 {get; set;}
        public string Param2 {get; set;}
        public string Param3 {get; set;}
    }
    

    或更改您的操作签名:

    public virtual RedirectResult OpenBrowserLink(string[] params)
    

    只需传递一个数组或参数。

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 2012-07-30
      • 2013-07-04
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多