How about using Newtonsoft to deserialize an object into a json string, and then paste it into the hide field, for example. ( Model.DataResponse.Entity.Commission is a list of simple "CommissionRange" objects, as you will see in JSON)
@using (Ajax.BeginForm("Settings", "AffiliateProgram", Model.DataResponse, new AjaxOptions { UpdateTargetId = "result" })) { string commissionJson = JsonConvert.SerializeObject(Model.DataResponse.Entity.Commission); @Html.HiddenFor(data => data.DataResponse.Entity.Guid) @Html.Hidden("DataResponse_Entity_Commission", commissionJson) [Rest of my form] }
Refers to:
<input id="DataResponse_Entity_Commission" name="DataResponse_Entity_Commission" type="hidden" value="[{"RangeStart":0,"RangeEnd":0,"CommissionPercent":2.00000},{"RangeStart":1,"RangeEnd":2,"CommissionPercent":3.00000},{"RangeStart":2,"RangeEnd":0,"CommissionPercent":2.00000},{"RangeStart":3,"RangeEnd":2,"CommissionPercent":1.00000},{"RangeStart":15,"RangeEnd":10,"CommissionPercent":5.00000}]">
In my case, I am doing some JS stuff to edit json in a hidden field before sending back
In my controller, I again use Newtonsoft to deserialize:
string jsonCommissionRange = Request.Form["DataResponse_Entity_Commission"]; List<CommissionRange> commissionRange = JsonConvert.DeserializeObject<List<CommissionRange>>(jsonCommissionRange);
Adam Hey Nov 25 '15 at 22:37 2015-11-25 22:37
source share