私がメインビューを持っているし、このビューのURLは、アクション/コントローラ/エリアとid値を持っている、のようなもの:私が持っているMVC3 PartialViewとAjax.BeginFormと持続routedata問題
http://localhost:56513/Incident/IncidentHome/Index/8c02a647-a883-4d69-91be-7ac5f7b28ab7
このメインビューのpartialviewは、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を使用してデータベース呼び出しを実行し、partialviewを再度返します。問題は返品にあります。 ViewContext.ParentActionViewContext.RouteData.Values ["id"]のToString()ビットがajax.beginformにあり、targetidが更新されません。
明らかに私は間違ったことをしているに違いありません。他の誰かがAjaxを通して親ビューのルーテータを見る良い方法がありますか?
私はそれが行く方法だと思います!私はちょうど私がモデルにIDを含んでいればそれが冗長であると考えました、すでにURLに入っていますが、その方法は問題なく動作しますので、ありがとう! – Phil