我對JQuery和Asp.net MVC 3(C#)都很新,所以我很抱歉,如果這是微不足道的。我有一個MVC部分視圖(Index.cshtml),它有一個任務列表。這些任務包含在我有列表樣式佈局的個人div中。我有一個名爲「添加任務」的按鈕,打開一個對話框。該對話框將通過AJAX Json調用將添加的任務保存到數據庫中。jQuery ajax命令後重新加載部分頁面
這是我遇到麻煩的地方 - 對話框關閉後,我想用剛剛添加的任務重新加載任務列表。我找到了整個頁面被重新加載的例子,並且我找到了控制器應該返回一個渲染視圖的例子。我的問題是,對話框正在打開我想重新加載的部分。有沒有辦法完成我想要做的事情。
Index.cshtml
@model IEnumerable<TaskManagementApplication.Models.Project>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div id="ProjectAccordionWrapper">
@foreach (var item in Model)
{
<div class="ProjectWrapper">
<h3>@item.Name</h3>
<div class="column">
<button class="createTaskButton" id="@item.ProjectID">Create New Task</button>
@foreach(var task in item.Tasks) {
var buttonClass = "taskID" + task.TaskID;
<div class="portlet">
<div class="portlet-header">@task.TaskName</div>
<div class="portlet-content">@task.TaskDescription</div>
<button class="editTaskButton" id="@task.TaskID">Edit Task</button>
</div>
}
</div>
</div>
}
</div>
<div id="dialog-form" title="Create new user">
<p class="validateTips">All form fields are required.</p>
<form>
<fieldset>
<label for="TaskName">Task Name</label>
<input type="text" name="TaskName" id="name" class="text ui-widget-content ui-corner-all" />
<label for="TaskDescription">Task Description</label>
<input type="text" name="TaskDescription" id="description" value="" class="text ui-widget-content ui-corner-all" />
<input type="hidden" name="TaskID" id="ID" />
<input type="hidden" name="ProjectID" id="ProjectID" />
</fieldset>
</form>
</div>
部分的Javascript
function GetTask(id) {
if (id.length > 0) {
$.ajax({
url: '/Project/GetTaskFromID',
type: "POST",
data: { "id": id },
success: PopulateDialogFields,
error: HandleError
});
}
}
function PopulateDialogFields(data) {
$("#name").val(data.TaskName);
$("#description").val(data.TaskDescription);
$("#ID").val(data.TaskID);
}
function HandleError(data) {
alert(data.error);
var foo = data;
}
function SaveTask() {
var taskName = $("#name").val();
var taskDescription = $("#description").val();
var id = $("#ID").val();
var projectID = $("#ProjectID").val();
if (id.length > 0) {
$.ajax({
url: '/Project/SaveTask',
type: "POST",
data: { "taskName": taskName, "taskDescription": taskDescription, "taskID": id }
});
}
else {
$.ajax({
url: '/Project/SaveTask',
type: "POST",
data: { "taskName": taskName, "taskDescription": taskDescription, "projectID": projectID }
});
}
}
$("#dialog-form").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"OK": function() {
SaveTask();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
},
close: function() {
allFields.val("").removeClass("ui-state-error");
window.location.reload(true);
},
open: function() {
var id = $(this).data("id");
var projectID = $(this).data("projectID");
$("#ProjectID").val(projectID);
var button = $("#" + id);
GetTask(id);
}
});
$(".editTaskButton")
.button()
.click(function() {
$("#dialog-form").data('id', this.id).dialog("open");
});
$(".createTaskButton")
.button()
.click(function() {
$("#dialog-form").data('projectID', this.id).dialog("open");
});
你的意思是你要刷新任務列表SaveTask稱爲後? – 2013-02-20 04:43:31
是的,這是正確的。我道歉。閱讀這麼多的教程,我的頭腦有些模糊。 – JClemson4 2013-02-20 05:25:12
你可以在ProjectController中發佈SaveTask動作嗎?此外,索引行動 – 2013-02-20 05:54:23