У меня есть сложная модель, которую я передаю своему виду, и она хорошо работает для отображения, но как только я передаю ее обратно, она становится нулевой.Моя модель выглядит следующим образом:
public class LeavingShopSetupViewModel
{
public LeavingShopSetupViewModel()
{
}
...Additional constructor here....
public BasicSetupAccessor BasicSetupAccessor { get; set; }
public SetupAcessor SetupAcessor { get; set; }
public FrontSuspensionAccessor FrontSuspensionAcessor { get; set; }
public RearSuspensionAccessor RearSuspensionAccessor { get; set; }
public BrakeAccessor BrakeAccessor { get; set; }
public void SaveSetup()
{
...Save code.....
}
}
Каждый из объектов состоит из простых объектов, таких как двойные числа, строки, целые числа ...
На мой взгляд, следующий с кодом javascript
@using RIS.Models.EventModels
@model LeavingShopSetupViewModel
<script type="text/javascript">
$(function() {
$("#submit_btn").click(function() {
var form = $('#setupForm');
$.ajax({
type: 'post',
url: "@Url.Action("SaveSetup","Events")",
data: form.serialize()
});
return false; // <-- cancel the default event
});
});
</script>
<form id="setupForm">
<fieldset>
<legend>Leaving Shop Setup</legend>
<div class="row-fluid">
<div class="span4">
...Boilerplate code.....
@BuildSheetHelpers.DoubleTextBox("FARB Link Length", Model.BasicSetupAccessor.SwayBarLinkLengthLF, Model.BasicSetupAccessor.SwayBarLinkLengthLR)
@BuildSheetHelpers.DoubleTextBox("Bump Stop Gap", Model.BasicSetupAccessor.BumpStopGapL, Model.BasicSetupAccessor.BumpStopGapR)
@BuildSheetHelpers.DoubleTextBox("Total BS Height", Model.BasicSetupAccessor.BumpRubberHeightTotalL, Model.BasicSetupAccessor.BumpRubberHeightTotalR)
...plenty more code that is all similar to this.....
</div>
</div>
</fieldset>
<a class="btn btn-primary" id="submit_btn">Save Setup</a>
@Html.HiddenFor(model => model.SetupAcessor)
@Html.HiddenFor(model => model.BasicSetupAccessor)
@Html.HiddenFor(model => model.BrakeAccessor)
@Html.HiddenFor(model => model.FrontSuspensionAcessor)
@Html.HiddenFor(model => model.RearSuspensionAccessor)
</form>
А моя вспомогательная функция выглядит следующим образом:
@helper DoubleTextBox(string displayTag, double? left, double? right)
{
<div class="row-fluid form-inline">
<input type="text" class="span4 data" value="@left"/>
<label class="span4 pagination-centered">@displayTag</label>
<input type="text" class="span4 data" value="@right"/>
</div>
}
Действие SaveSetup просто
public ActionResult SaveSetup(LeavingShopSetupViewModel setup)
{
setup.SaveSetup();
return null;
}
Когда я ставлю точку останова в вышеуказанном действии, настройкапеременная содержит только нули.Как я могу передать полную модель обратно?