我对 JQuery 和 Asp.net MVC 3 (C#) 都很陌生,所以如果这是微不足道的,我深表歉意。我有一个包含任务列表的 MVC 部分视图 (Index.cshtml)。这些任务包含在我在列表样式布局中的单个 div 中。我有一个名为“添加任务”的按钮,可以打开一个对话框。此对话框将通过对控制器的 AJAX Json 调用将添加的任务保存到数据库中。
这就是我遇到问题的地方 - 对话框关闭后,我希望任务列表与我刚刚添加的任务一起重新加载。我找到了重新加载整个页面的示例,并且我找到了控制器应该返回渲染视图的示例。我的问题是对话框是从我要重新加载的部分打开的。有没有办法完成我想做的事情。
索引.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");
});