我对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