私は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");
  });