Как перезагрузить View после вызова JQuery для выполнения действия и отображения сообщения - PullRequest
1 голос
/ 20 мая 2011

Я пытаюсь найти способ перезагрузить таблицу после каждого действия кнопки. Я думал о перезагрузке страницы, но я не знаю, как я мог бы перезагрузить страницу, а затем распечатать сообщение, возвращенное функцией WebService, в div.

CSHTML-код:

@model Namespace.Models.ItemModel
<div id="deleted" />
<input text id="curSelId" />
<input text id="curSelObj" />
<input text id="curSelfObjId" />
<table>
<tbody>
    @foreach (var item in Model.myDeleted)
    {
        <tr id="@item.DeletedId" value="@item.DeletedId">
            <td>@item.Timestamp</td>
            <td class="type">@item.Type</td>
            <td class="typeid">@item.TypeId</td>
        </tr>
    }
</tbody>
</table>

JQuery код:

function Undo()
    {
        $.ajax({
            type: "POST",
            url: "@Url.Content("~/webservices/retrieve.asmx/Undo")",
            data: "{'index': '" + $('[id$=curSelId]').val() + "'," +
                  "'type': '" + $('[id$=curSelObj]').val() + "'," +
                  " 'typeId': '" + $('[id$=curSelObjId]').val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {

                //http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/
                if (msg.hasOwnProperty("d")) {
                    // Leave the .d behind and pass the rest of
                    //  the JSON object forward.
                    var obj = msg.d;
                    $("#deleted").html(obj);
                }
                else {
                    // No .d; no transformation necessary.
                    AjaxSucceeded(msg, dropdown, hidden);
                }
            }
            , error: AjaxFailed
        });
    }

Отредактировано: добавлены поля ввода.

1 Ответ

0 голосов
/ 20 мая 2011

Один из способов перезагрузки - использовать AJAX:

@model Namespace.Models.ItemModel
<div id="deleted"></div>
<div id="mytable" data-url="@Url.Action("MyTable", "SomeController")">
    @Html.Partial("_MyTable", Model)
</div>

, где _MyTable.cshtml содержит таблицу:

@model Namespace.Models.ItemModel
<table>
<tbody>
    @foreach (var item in Model.myDeleted)
    {
        <tr id="@item.DeletedId" value="@item.DeletedId">
            <td>@item.Timestamp</td>
            <td class="type">@item.Type</td>
            <td class="typeid">@item.TypeId</td>
        </tr>
    }
</tbody>
</table>

и внутри успешного обратного вызова вашей перезагрузки ajax-запроса.div:

success: function (msg) {
   var myTableDiv = $('#mytable');
   myTableDiv.load(myTableDiv.data('url'));
   ...
}

, где действие MyTable будет отображать ту же часть:

public ActionResult MyTable()
{
    ItemModel model = ...
    return PartialView("_MyTable");    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...