我有一個Javascript文件,它在我的代碼隱藏中調用方法。這似乎工作,如果我創建一個無參數的默認構造函數,示例1,但我想傳遞給保存方法我ViewModel,示例2.當我這樣做時,我得到一個500錯誤。深入挖掘後,我發現了有關該網絡錯誤的更多細節。將ViewModal從javascript文件傳遞到代碼隱藏文件
無參數默認構造函數 - 只有當其他構造函數被註釋掉時纔有效。
實施例1
[HttpPost]
public JsonResult SaveWorkRequestDetails()
{
return Json(new {});
}
如果我有這兩種代碼中的隱藏文件然後我得到這個錯誤:對控制器類型「WorkRequestController」動作「SaveWorkRequestDetails」的當前請求是下列之間曖昧操作方法: System.Web.Mvc.JsonResult SaveWorkRequestDetails()上型WorkRequest.Controllers.WorkRequestController System.Web.Mvc.JsonResult SaveWorkRequestDetails(WorkRequest.ViewModel.WorkRequestViewModel)上型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警報上面,我看到了用戶進行選擇。一切正常,所以我只想把它傳遞給Controller的SaveWorkRequestDetails,我該怎麼做。我的理解是數據參數傳遞給url參數中指定的方法。
我添加了一個沒有任何參數的例子,因爲例子2沒有被調用。理想情況下,我只想將您看到的Save方法作爲第二個示例。 –
通過從不叫,你的意思是WorkRequestViewModel爲null或者,Ajax是請求永遠不會發送? –
我的意思是我在那裏放置一個斷點,它永遠不會到達。如果我只有示例2中的Save方法,則會得到不同的錯誤:爲此對象定義的無參數構造函數。 –