我有一個時間表應用程序,其中一個視圖包含由jQuery加載的PartialView。主視圖和部分視圖用不同的模型類型強制類型化。在MVC 2應用程序中的PartialView中傳遞模型?
一切工作正常加載數據。來自每個相應模型的數據將被加載到主視圖(包含所有客戶和任務的下拉列表)和PartialView(特定創建的任務,其中輸入字段記錄了幾個小時)。
但是,需要提交PartialView(包含表單),以便其模型可以更新數據庫。通常,MVC綁定的簡單性應該是模型的屬性綁定到視圖中的字段,並且您可以提交然後保存該模型。但它在這裏不起作用。首先,我需要通過jQuery提交部分視圖,就像我需要以這種方式獲取數據一樣。因爲如果我只是使用提交輸入字段,則PartialView是唯一返回的東西(它會在返回時佔用整個頁面)。所以我這樣做:
在點擊savehours按鈕:
$('#savehours').click(function (event) {
alert('Test');
var form = $('#hoursForm');
var actionUrl = '<%= Url.Action("GetTasks", "Timesheet") %>';
$.ajax({
type: "POST",
url: actionUrl,
data: form.serialize(),
error: function (xhr, status, error) {
//do something about the error
},
success: function (data) {
$('#tasksDiv').html(data);
}
});
});
和Controller:
[HttpPost]
public ActionResult GetTasks(TasksViewModel tasksViewModel)
{
string test = tasksViewModel.Tasks.FirstOrDefault().ToString(); //Test for debugging...
//Doesn't seem to work, I don't get the model back...
_model.Save();
return PartialView(GetTaskModel());
}
由於我的言論表明,我用一個簡單的字符串進行測試,看我有訪問綁定到PartialView中的字段的模型,但我沒有。
我現在想我可能會嘗試使用ViewData而不是將模型傳遞給View,然後將字段綁定到ViewData。我不知道這是否會更好,但這是我目前唯一的想法。或者我在這裏做錯了什麼?應該可以做我一直在做的事情,只有我做錯了嗎?
不起作用。它甚至不會超過字符串測試的第一部分,因爲Tasks.FirstOrDefault爲null ...這是我不明白的地方。當我使用GetTasks httpget方法加載PartialView中的輸入字段時,它會加載正常,所以模型顯然在該階段沒問題。但是當我通過jQuery提交post方法時,返回的模型似乎不包含任何任務。 – Anders 2010-12-09 13:10:57