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

时间:2015-09-21 04:00:30

标签: 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" }

我正在尝试绑定MVC Controller中的那些。这就是它现在的样子:

    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 => m.Text, new { Param1=1, Param2=2, Param3=3 });

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

模型绑定器无法正常工作,因为您的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)

并且只传递一个或多个参数。