Пример кода Master-Detail для MVC 3 Razor (используя Ajax для деталей) - Часть 2 - PullRequest
1 голос
/ 07 апреля 2011

В настоящее время я показываю дерево в левом столбце.Когда пользователь выбирает узел, я загружаю правый столбец #details с ответом на вызов ajax.Это прекрасно работает.

Теперь я хочу отправить правильные столбцы #details через ajax.Я могу перехватить сообщение обратно на сервер, однако, когда я возвращаю строку обратно в раздел #details, она загружает всю страницу со строкой «успешно сохранено»

Я действительно хочу, чтобы строка «успешно сохранена»для размещения в элементе div в правом столбце.

Это ответ ajax, снова выполняющий другой ответ ajax (который я хочу вернуть к первому ответу ajax).

Этовозможно?

Моя форма редактирования выглядит следующим образом

@using (Ajax.BeginForm("Edit", new AjaxOptions { UpdateTargetId = "#results" })) { 


@Html.ValidationSummary(true)

if (Model != null) {     
    <fieldset>
    <legend>Code</legend>

    @Html.HiddenFor(model => model.CodeID)

    <div class="editor-label">
        @Html.LabelFor(model => model.Description)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Description)
        @Html.ValidationMessageFor(model => model.Description)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Note)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Note)
        @Html.ValidationMessageFor(model => model.Note)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.DateModified)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.DateModified)
        @Html.ValidationMessageFor(model => model.DateModified)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.TopicID)
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.TopicID, (SelectList)ViewData["Topics"], "Select")
        @Html.ValidationMessageFor(model => model.TopicID)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Special)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Special)
        @Html.ValidationMessageFor(model => model.Special)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Html)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Html)
        @Html.ValidationMessageFor(model => model.Html)
    </div>

    <p>
        <input type="submit" value="Save" />
    </p>
</fieldset>
}


} 


<div>
    @Html.ActionLink("Back to List", "Index")
</div>

<div id="results">
    Status
</div>

1 Ответ

1 голос
/ 07 апреля 2011

Убедитесь, что вы включили следующий скрипт на свою страницу, если хотите использовать Ajax.* помощники:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

Если вы не включите его, нет ничего, что могло бы понять смысл атрибутов HTML5 data- *, испускаемых Ajax. * Помощником и AJAXify этой формы => форма выполняет обычную отправку и отображает результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...