Я пытаюсь передать выбранное значение переключателя из представления в контроллер.В настоящее время при передаче значения значение = 0. При загрузке страницы из объекта, который извлекается из базы данных, выбранное значение задается правильно.Однако при изменении этого параметра значение не сохраняется при публикации.По умолчанию используется значение 0, которое не соответствует ни одному из элементов, доступных для выбора.
Это модель (часть):
public class RenewModel
{
//other properties
public List<RenewalRiskItem> RiskItems { get; set; }
}
public class RenewalRiskItem
{ //other properties of the model]]
[Required(ErrorMessage = "Please enter the after market accessories value for your vehicle using a valid dollar amount")]
[Display(Name = "After Market Accessories")]
[RegularExpression(@"^\d*\,?\d*", ErrorMessage = "Numbers only")]
public string AMAExtras { get; set; }
[Required(ErrorMessage = "Please verify if car rental after accident is required")]
[Display(Name = "Include car rental after accident?")]
public AusEnums.YesNo RentalAfterAccident { get; set; }
}
Это мой вид:
@if (@Model.RiskItems[i].CoverLevelType == CoverCode.Comprehensive.ToString())
{
if (@Model.IsEBProduct)
{
<div class="form-group row">
@Html.LabelFor(m => @Model.RiskItems[i].AMAExtras, new { @class = "col-lg-5 control-label label-input" })
<div class="col-lg-7">
@Html.TextBoxFor(m => @Model.RiskItems[i].AMAExtras, new { @class = "open-box money", placeholder = "After Market Accessories", @Value = @Model.RiskItems[i].AMAExtras })
<span class="unit">$</span>
@Html.ValidationMessageFor(m => @Model.RiskItems[i].AMAExtras)
</div>
@Html.HiddenFor(m => @Model.RiskItems[i].AMAExtras, new { @class = "comp-excess" })
</div>
}
<div class="form-group row">
<label class="col-lg-5 control-label label-input">
Car Rental
</label>
<div class="col-lg-7">
<div data-toggle="buttons" class="btn-group">
<label class="btn btn-radio">
@Html.RadioButtonFor(m => @Model.RiskItems[i].RentalAfterAccident, "Yes", new { name = "radIsCarRental" }) Yes
</label>
<label class="btn btn-radio">
@Html.RadioButtonFor(m => @Model.RiskItems[i].RentalAfterAccident, "No", new { name = "radIsCarRental" }) No
</label>
</div>
</div>
@Html.ValidationMessageFor(m => @Model.RiskItems[i].RentalAfterAccident, null, new { @class = "col-lg-12" })
</div>
}
Контроллер (только его часть - первая часть только для извлечения):
[HttpPost]
public ActionResult RenewalOverview(RenewModel model, string submit)
{
var renewPolicy = SessionHelper.PolicyBase.RenewalPolicy;
foreach (var riskItem in model.RiskItems)
{
var ssVehicle = renewPolicy.CarDetail.FirstOrDefault(x => x.RecordNumber == riskItem.VehKey);
ssVehicle.ExcessAmount = riskItem.Excess;
ssVehicle.Cover = SessionHelper.GetCoverLevel(riskItem.CoverLevel);
switch (ssVehicle.Cover)
{
case CoverCode.Comprehensive:
ssVehicle.CarValue = int.Parse(riskItem.AgreedValue.Replace(",", ""));
ssVehicle.RentalAfterAccident = riskItem.RentalAfterAccident == AusEnums.YesNo.No ? false : true;
if (model.IsEBProduct)
ssVehicle.TotalExtras = int.Parse(riskItem.AMAExtras.Replace(",", ""));
else
ssVehicle.TotalExtras = 0;
break;
case CoverCode.TPO:
ssVehicle.ExcessAmount = int.Parse(ConfigurationManager.AppSettings["ThirdPartyExcess"]);
ssVehicle.RentalAfterAccident = false;
ssVehicle.TotalExtras = 0;
break;
case CoverCode.TPFT:
ssVehicle.ExcessAmount = int.Parse(ConfigurationManager.AppSettings["ThirdPartyExcess"]);
ssVehicle.CarValue = int.Parse(riskItem.AgreedValue.Replace(",", ""));
ssVehicle.RentalAfterAccident = false;
break;
}
}
«Модель RenewModel» в ActionResult, которая возвращает результат в действие post, возвращает«RentalAfterAccident» равно 0, если опция изменена.Значение «Да» / «Нет» не сохраняется моделью при публикации.Это единственное значение, которое не сохраняется.Если, однако, опция не меняет значение, то «Да» или «Нет» передаются правильно
Есть идеи, как это исправить?