Я пытаюсь передать RouteValueDictionary
моему aspx, чтобы я мог использовать его в качестве параметров для 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 }