【发布时间】:2016-03-01 02:16:46
【问题描述】:
我正在尝试使用 JQuery/Ajax 将我的模型传递给控制器,但我不确定如何正确执行此操作。到目前为止,我已经尝试使用Url.Action,但模型是空白的。
注意:stackoverflow 上的重复线程似乎都没有使用 ASP.NET 5 MVC 6 解决。
查看:
$("#inpDateCompleted").change(function () {
var url = '@(Url.Action("IndexPartial", "DashBoard", Model, null))';
$("#DailyInvoiceItems").load(url);
});
控制器:
[HttpGet]
public PartialViewResult IndexPartial(DashBoardViewModel m)
{
// Do stuff with my model
return PartialView("_IndexPartial");
}
【问题讨论】:
-
有点不清楚你想做什么。
Url.Action()的第三个参数将是您第一次生成视图时的原始模型,如果您的模型包含任何复杂对象或集合的属性,它无论如何都会失败。 -
那只会通过原始模型(
Url.Action()是在发送到视图之前在服务器上解析的剃须刀代码)。如果您只想将所选日期发送给方法,请使用$("#DailyInvoiceItems").load('@(Url.Action("IndexPartial", "DashBoard")', { date: $(yourdatecontrol).val()); });并将方法更改为具有DateTime date参数。 -
您可以使用
$('form').serialize()序列化表单中的所有控件。例如$.post('@(Url.Action("IndexPartial", "DashBoard"),$('form').serialize()`, function(data) { $("#DailyInvoiceItems").html(data); }); -
这就是
$('form').serialize()的作用。您的DashBoardViewModel m参数将被正确绑定(假设您已正确生成表单控件) -
这意味着您确实应该使用视图模型(即仅包含您在视图中需要的那些属性),但是不,您排除的任何属性将只是它们在方法中的默认值。
标签: asp.net-mvc asp.net-core asp.net-core-mvc