Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery将动态参数传递给ASP MVC_Javascript_C#_Jquery_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Javascript 使用Jquery将动态参数传递给ASP MVC

Javascript 使用Jquery将动态参数传递给ASP MVC,javascript,c#,jquery,asp.net-mvc,asp.net-mvc-4,Javascript,C#,Jquery,Asp.net Mvc,Asp.net Mvc 4,我试图将动态参数从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}

我试图将动态参数从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);
        }
    }
公共虚拟重定向结果OpenBrowserLink(对象URL参数) { IDictionary paramsPair=新的RouteValueDictionary(urlParameters); foreach(paramsPair中的var项) { 系统.诊断.调试.写入线(项.键); } } 但是,它没有正确绑定。值为空。在fiddler上,这是它发送数据的方式:

知道发生了什么吗?还是有更好的方法来处理这个问题?基本上,我试图模仿Html助手发送参数的方式,并使用JQuery从控制器端绑定参数。HtmlHelper示例:
Html.TextboxFor(m=>m.Text,新的{Param1=1,Param2=2,Param3=3})


非常感谢您的帮助

模型绑定器无法工作,因为您的
对象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)
只需传递一个数组或参数