a を aspx に渡してRouteValueDictionary
、メソッドのパラメーターとして使用できるようにしようとしていますAjax.BeginForm
。次のようにロードします。
RouteValues = new System.Web.Routing.RouteValueDictionary();
RouteValues.Add("FindingId", thisFinding.Id);
RouteValues.Add("ReportId", thisFinding.ReportSection.ReportId);
問題なくモデルに追加します。メソッドのパラメーターとして配置するとBeginForm
、アクションは次のようにレンダリングされます。
/SolidWaste/Finding/LoadSection?Count=3&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D
aspx コードは次のとおりです。
(Ajax.BeginForm(Model.FormModel.Action,
Model.FormModel.Controller,
Model.FormModel.RouteValues,
new AjaxOptions {
HttpMethod = "Post",
InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,
UpdateTargetId = "WindowContent",
}, new { id = FormId })) { %>
<input name="submit" type="submit" class="button" value="" style="float: right;"/>
<% } //End Form %>
Model.FormModel を表すビュー モデルは次のとおりです。
public class FormViewModel {
public string Action { get; set; }
public string Controller { get; set; }
public string Method { get; set; }
public RouteValueDictionary RouteValues { get; set; }
}
アクションで RouteValueDictionary を適切な URL にシリアル化していない理由はありますか? RouteValues を手動で構築するのではなく、ここでオブジェクトを使用したいと思いますnew { field = vale }