我有一個數據表網頁,顯示數據表中的用戶列表。在用戶頁面上有一個按鈕創建新用戶。點擊後會啓動一個模態jQuery對話框,供用戶輸入新用戶的詳細信息。有一個取消按鈕,它只是關閉對話框和一個保存用戶按鈕,點擊調用我的控制器中的DoSaveUser方法。我可以從調試中看到,如果創建用戶成功說出用戶已保存,那麼我將進入DoSaveUser方法,該方法最終應返回到PartialView。然而,我的對話框是你輸入的細節沒有被成功消息取代 - 即使用戶正在創建 - 即 - 我點擊保存按鈕後 - 如果我然後取消對話框並刷新原始用戶頁面,我可以看到數據表與我的新用戶更新。MVC 3在對話框不起作用的部分視圖
UserList頁面上的代碼(對話框中有更多的字段不只是名字,但已刪除它們使問題有更少的代碼)。所以當點擊CreateUser按鈕時,我的newUserDialog被啓動。被點擊該對話框上的保存用戶
<div id="newUserDialog">
@using (Html.BeginForm("DoSaveUser", "MyController", FormMethod.Post, new { id = "saveForm" }))
{
<div id="resultContainer">
<table class="ui-widget-content" style="width: 565px; margin-top: 10px;">
<tr>
<td style="width: 100px;">
</td>
<td class="label">
Forename :
</td>
<td class="value">
@Html.TextBoxFor(model => model.Forename, new { style = "width:150px" })
</td>
</tr>
</table>
<div class="ui-widget-content Rounded" style="width: 565px; margin-top: 10px; text-align: center;">
<input id="Cancel" type="button" class="dialog-button" value="Cancel" style="margin: 5px" />
<input id="DoSaveUser" type="submit" class="dialog-button" value="Save User" style="margin: 5px" />
</div>
</div>
}
Javascript代碼 - 提交表單。
$(function() {
$('#saveForm').submit(function() {
var formData = $("#saveForm").serializeArray();
$.ajax({
url: this.action,
type: this.method,
data: formData,
dataType: "json",
success: function (result) {
$('#resultContainer').html(result);
}
});
return false;
});
});
現在在我的控制我的DoSaveUser方法,我可以設置一個斷點並擊中並查看正確發送的對應字段中的所有值 - 一旦我被保存到數據庫,這是回報。
return PartialView("UserSuccess", model);
這是所有視圖包含了我想要的是結果div容器包含我所有的文本字段和標籤與用戶已成功建立被替換的cshtml..note。然後我需要在這個頁面上確定一個點擊它將關閉對話框並刷新UserList頁面並顯示用新用戶更新的數據表。然而,當我點擊保存文本框只是保持在Div和Div不會改變 - 但如果我然後取消對話框並刷新頁面,我可以看到數據表更新與我的新用戶。有什麼我失蹤? (注意 - 我已經添加jquery.unobtrusive-ajax.js我_layout頁)
@model MyProject.Models.UserModel
@{
ViewBag.Title = "UserSuccess";
}
<div id="resultContainer">
User Created Successfully
</div>
感謝您的回覆 - 我已根據您的建議編輯了代碼(是的,我的初始頁有#resultContainer div - 在使用後僅查看它 - - 但正如您所建議的,我有c它遊離缺失可能是不正確的地方 - 它現在已經關閉在同一條線上,你建議,並從局部視圖頁面刪除 - 然而仍然沒有得到它的工作。一件事是我添加了一個警告成功:function(result){alert('我在這裏'); $('#resultContainer')。html(result); }從來沒有彈出在我的網頁上? –
那麼你的成功處理程序顯然不會被調用。你的html視圖是否返回沒有錯誤?按下Ctrl + Alt + E並在異常情況下啓用中斷以查看調試器中的視圖是否有異常。 –
乾杯 - 才意識到我已經傻 - 我有我的JS對於在不需要爲我的JS是包含在頂部的document.ready聲明不同的文件的額外函數聲明提交。 –