MVC3 - Ajax.BeginForm и частичное обновление вида - PullRequest
1 голос
/ 06 июля 2011

Есть ли способ обновить раздел частичного представления, или я должен разбить этот раздел на его отдельный частичный просмотр?Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я отправляю свою форму, обновляется весь частичный вид, дублируя входные данные моей формы, но я действительно хочу только обновить «noteList».Вот еще некоторые подробности, которые могут быть полезны.

В моем проекте у меня есть страница, разделенная на отдельные вкладки, каждая из которых представляет собой свое частичное представление, которое загружается, когда кто-то нажимает на эту вкладку.В данный момент я сосредотачиваюсь на вкладке заметок.

Ниже находится разметка и контроллер, который ловит сообщение.

<div id="noteList">
    @Html.Grid(Model).Columns(column => {
        column.For(x => x.TimeStamp);
        column.For(x => x.UserName);
        column.For(x => x.Note);
        }).Attributes(Style => "text-aligh: center", @Class => "linkGrid")
</div>
<div id="addNoteForm">
    <h2>Add New Note</h2>
    @using (Ajax.BeginForm("AddNote", "Dispute", null, new AjaxOptions { UpdateTargetId = "noteList" }, new { id = "AddNote" })) {
        @Html.Hidden("DisputeID", ViewData["DisputeID"])
        <div class="editor-multiline-field">
            @Html.Editor("Note", "editor-multiline-field")
        </div>
        <input type="submit" value="Add Note" />        
    }
</div>

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddNote(FormCollection collection) {
    if (this.ModelState.IsValid) {
        DisputeNote newNote = new DisputeNote(repository.Get(int.Parse(collection["DisputeID"])), User.Identity.Name, collection["Note"]);
        repository.SaveForUpdate<DisputeNote>(newNote);
    }
    var Notes = repository.GetNotesForDispute(int.Parse(collection["DisputeID"]));
    ViewData["DisputeID"] = int.Parse(collection["DisputeID"]);
    return PartialView("NoteList", Notes);
}

Я знаю, что разбить его на другое частичное представление сработает, но мне любопытно, есть ли другой способ сделать это.

1 Ответ

2 голосов
/ 06 июля 2011

Вам нужно другое частичное представление, чтобы сделать это так, как вы перечислили здесь - вы не можете обновить часть частичного представления тем же самым частичным представлением.ОДНАКО :) есть и другие варианты - например, просто возвращение JSON.Вы можете просто использовать вызов .ajax (), чтобы опубликовать JSON в свой метод контроллера, чтобы добавить примечание.

См. Этот пост для приблизительной идеи:

JSON / MVC (3P1) HttpPost - не работает на моем классе EF

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