メインビューがあり、このビューのURLには、次のようなAction / Controller/Areaとidの値があります。
http:// localhost:56513 / Incident / IncidentHome / Index / 8c02a647-a883-4d69-91be-7ac5f7b28ab7
このメインビューには、Ajaxを介してコントローラーのメソッドを呼び出す部分ビューがあります。この部分ビューは、親ページのURLのID値を知っている必要があります。これを行う方法は、「ParentActionViewContent」を使用することでわかりました。何かのようなもの:
using (Ajax.BeginForm("UpdatePersonalStatusPanel", "Status", new { area = "Tools" , id = ViewContext.ParentActionViewContext.RouteData.Values["id"].ToString() }, new AjaxOptions { UpdateTargetId = "divPersStatus" }))
{
<p style="text-align: center;">
<span class="editor-label">@Html.LabelFor(m => m.StatusText)</span> <span class="editor-field">@Html.EditorFor(m => m.StatusText)</span>
<input type="submit" value="Change Current Status" />
</p>
}
これで、コントローラーメソッドを呼び出すのに最適です。IDは正しく渡されるため、コントローラーはルートデータでIDを確認できます。idを使用してデータベース呼び出しを実行してから、partialviewを再度返します。問題は帰りにあります。ajax.beginformのViewContext.ParentActionViewContext.RouteData.Values["id"]。ToString()ビットで「オブジェクトのインスタンスに設定されていないオブジェクト参照」を取得しましたが、targetidが更新されません。
明らかに私は何か間違ったことをしているに違いありません。他の誰かがAjaxを介して親ビューのルートデータを表示するためのより良い方法を持っていますか?