私はJQueryとAsp.netMVC3(C#)の両方に非常に慣れていないので、これが些細なことであるとお詫びします。タスクのリストを含むMVC部分ビュー(Index.cshtml)があります。これらのタスクは、リストスタイルのレイアウトにある個々のdivに含まれています。ダイアログを開く「タスクの追加」というボタンがあります。このダイアログは、コントローラーへのAJAX Json呼び出しを介して、追加されたタスクをデータベースに保存します。
これは私が問題を抱えているところです-ダイアログが閉じた後、タスクのリストを追加したばかりのタスクでリロードしたいと思います。ページ全体がリロードされる例と、コントローラーがレンダリングされたビューを返すことになっている例を見つけました。私の問題は、リロードしたい部分からダイアログが開かれていることです。私がやろうとしていることを達成する方法はありますか?
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");
});