【发布时间】:2013-11-23 12:11:44
【问题描述】:
我有一个 Javascript 文件,它在我的代码隐藏中调用一个方法。如果我创建一个无参数的默认构造函数示例 1,这似乎可行,但我想将我的 ViewModel 示例 2 传递给 save 方法。当我这样做时,我得到一个 500 错误。在深入挖掘后,我发现了有关该网络错误的更多详细信息。
无参数默认构造函数 - 这有效,但前提是其他构造函数被注释掉。
示例 1
[HttpPost]
public JsonResult SaveWorkRequestDetails()
{
return Json(new {});
}
如果我在代码隐藏文件中同时拥有这两个,则会收到此错误:控制器类型“WorkRequestController”上的当前操作请求“SaveWorkRequestDetails”在以下操作方法之间不明确: System.Web.Mvc.JsonResult SaveWorkRequestDetails() on type WorkRequest.Controllers.WorkRequestController System.Web.Mvc.JsonResult SaveWorkRequestDetails(WorkRequest.ViewModel.WorkRequestViewModel) on type WorkRequest.Controllers.WorkRequestController
示例 2
[HttpPost]
public JsonResult SaveWorkRequestDetails(WorkRequestViewModel viewModel)
{
// TODO: Save logic goes here
return Json(new { });
}
我需要传递 viewModel 以保存用户的选择。我错过了一些东西,我不确定是什么。
RegisterUIEventHandlers: function () {
$('#Save').click(function (e) {
// Check whether the form is valid. Note: Remove this check, if you are not using HTML5
if (document.forms[0].checkValidity()) {
e.preventDefault();
$.ajax({
type: "POST",
url: WorkRequest.SaveUrl,
data: ko.toJSON(WorkRequest.ViewModel),
contentType: 'application/json',
async: true,
beforeSend: function () {
// Display loading image
alert(ko.toJSON(WorkRequest.ViewModel));
},
success: function (result) {
// Handle the response here.
},
complete: function () {
// Hide loading image.
},
error: function (jqXHR, textStatus, errorThrown) {
// Handle error.
}
});
}
});
}
在您在 beforeSend 中看到的警报中,在上面 javascript 中的 AJAX POST 中,我看到了用户所做的选择。一切正常,所以我只想将它传递给控制器的 SaveWorkRequestDetails,请问我该怎么做。我的理解是 data 参数将其传递给 url 参数中指定的方法。
【问题讨论】:
标签: json jquery asp.net-mvc-4