3

データベースにアイテムを追加するときに更新する必要があるという部分的な見方があります。

Index.cshtml:

@using (Ajax.BeginForm("Index", "WinEntry", new AjaxOptions { HttpMethod = "POST",      UpdateTargetId = "wingrid", InsertionMode = InsertionMode.Replace}))
{
    @Html.Partial("_winVenue")
    @Html.Partial("_singleWin")
}
<div id="wingrid">
    @Html.Partial("_wingrid")
</div>

_singleWinには送信ボタンがあります

コントローラー:

[HttpPost]
public ActionResult Index(Win win)
{
    win.dealerId = "1234567890";
    win.posterid = "chris";
    win.posttime = DateTime.Now;
    wem.addWin(win);
    IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate);
    return PartialView("_wingrid",w);
}

コントローラが部分ビュー_wingridを返すと、それを新しいページとして返します。私が探している動作は、wingriddiv内の更新パネルのようなものです。

どんな助けでもいただければ幸いです。

4

1 に答える 1

5

UpdateTargetId = "wingrid"AJAXフォームのオプションのおかげで、すでにこれを行っているようです。POSTコントローラーアクションで変更した値をmodelstateからクリアするようにしてください。それ以外の場合、HTMLヘルパーは引き続き古い値を使用できます。

[HttpPost]
public ActionResult Index(Win win)
{
    ModelState.Remove("dealerId");
    win.dealerId = "1234567890";
    ModelState.Remove("posterid");
    win.posterid = "chris";
    ModelState.Remove("posttime");
    win.posttime = DateTime.Now;
    wem.addWin(win);
    IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate);
    return PartialView("_wingrid",w);
}

また、ヘルパーを機能さjquery.unobtrusive-ajax.jsせたい場合は、スクリプトをページに含めることを忘れないでください。Ajax.*

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
于 2012-02-19T13:00:43.617 に答える