我正在尝试将动态参数从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¶m2=2¶m3=3
知道发生了什么事吗?或者有更好的方法来处理这个问题吗?基本上我试图模仿Html Helpers发送参数的方式,并使用JQuery从控制器端绑定它。 HtmlHelper示例:Html.TextboxFor(m => m.Text, new { Param1=1, Param2=2, Param3=3 });
非常感谢您的帮助
答案 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)
并且只传递一个或多个参数。