看起来你的IndexPartial
操作方法有一个复杂对象参数。如果你正在传递大量数据(复杂对象),将操作方法转换为HttpPost
操作方法,并使用jQuery的post
方法将数据提交可能是个好主意。GET在查询字符串值方面有限制。
[HttpPost]
public PartialViewResult IndexPartial(DashboardViewModel m)
{
return PartialView("_IndexPartial");
}
你的脚本应该是
var url = "@Url.Action("IndexPartial","YourControllerName")";
var model = { Name :"Shyju", Location:"Detroit"};
$.post(url, model, function(res){
$("#SomeDivToShowTheResult").html(res);
});
假设您的 DashboardViewModel
类具有属性 Name
和 Location
,并且 SomeDivToShowTheResult
是页面上一个 div 的 id,您想要在其中加载来自 partialview 的内容。
发送复杂对象?
如果需要,您可以在 js 中构建更复杂的对象。只要结构与视图模型类匹配,模型绑定就会起作用。
var model = { Name :"Shyju",
Location:"Detroit",
Interests : ["Code","Coffee","Stackoverflow"]
};
$.ajax({
type: "POST",
data: JSON.stringify(model),
url: url,
contentType: "application/json"
}).done(function (res) {
$("#SomeDivToShowTheResult").html(res);
});
为了将上述js模型转换为您的方法参数,您的视图模型应该像这样。
public class DashboardViewModel
{
public string Name {set;get;}
public string Location {set;get;}
public List<string> Interests {set;get;}
}
在您的操作方法中,指定 [FromBody]
[HttpPost]
public PartialViewResult IndexPartial([FromBody] DashboardViewModel m)
{
return PartialView("_IndexPartial",m);
}
Url.Action()
是服务器端解析后发送到视图的 Razor 代码)。如果你只想将所选日期发送到方法,请使用$("#DailyInvoiceItems").load('@(Url.Action("IndexPartial", "DashBoard"))', { date: $(yourdatecontrol).val() });
并且更改方法来带有一个DateTime date
参数。 - user3559349$('form').serialize()
来序列化你表单中的所有控件。例如:$.post('@(Url.Action("IndexPartial", "DashBoard"),
$('form').serialize(), function(data) { $("#DailyInvoiceItems").html(data); });
- user3559349$('form').serialize()
的作用。假设您已经正确生成了表单控件,您的DashBoardViewModel m
参数将被正确绑定。 - user3559349