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

本文关键字:ASP MVC 参数 动态 Jquery 使用 | 更新日期: 2023-09-27 18:13:45

我试图从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);
        }
    }

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

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

谢谢你的帮助

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

模型绑定器不会工作,因为你的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)