9

私は.NETmvcを初めて使用します。

「DisplayThings」ビューでは、次のようなものがあります。

@foreach (var thing in Model)
{
    @Html.Partial("DisplayPartial", thing)
}

部分ビュー「DisplayPartial」で私は持っています

@using (Ajax.BeginForm("Afunc", new AjaxOptions ()))
{
    @Html.EditorFor(model => model.AstringThing)
    @Html.EditorFor(model => model.AintThing)

    <input type="submit" name="submit" value="Ajax Post" />
}

現時点では、「Afunc」-アクションはモデルをデータベースに保存してから、コントローラーアクションにリダイレクトして、データベースからすべての「モノ」を取得し、「ディスプレイシング」ビュー全体をレンダリングします。

私の質問は次のとおりです。送信ボタンの1つを押すと(リストのすべての「もの」に対して1つの送信ボタンがあります)。その部分的なビューのみをリロード/変更に反映させたい。「Displaythings」ビュー全体をリロードしたくありません。どうすればよいですか?部分ビューを返すだけでは、その部分ビュー以外はすべて失われます。

これが悪いアプローチである場合は、道順を教えてください。

アップデート:

部分ビューが新しいページにレンダリングされるので、まだ何か問題があります。私のコントローラー:

public ActionResult Afunc(ThingModel thingmodel)
{
    // do

    return PartialView("DisplayPartial", thingmodel);
}

UpdateTargetIdと成功の両方を使用してみましたが、同じ結果になりました(新しいページ)

4

1 に答える 1

12

その中で、プロパティを使用してターゲット要素を指定できるため、AjaxOptions単に通過しているだけです。new AjaxOptionsUpdateTargetId

<div id="unique_thing_id">
@using (Ajax.BeginForm("Afunc", new AjaxOptions { UpdateTargetId = 'unique_thing_id' }))
{    
}
</div>

上記では、すべての「もの」に一意のIDを持つコンテナが。で表されてい<div id="unique_thing_id">ます。これは、リクエストの応答に置き換えられます。Afunc特定の「もの」のみを部分的にレンダリングするように変更します。

于 2013-02-10T19:00:25.237 に答える