Установите значение "HiddenFor" для выбранного значения выпадающего списка
У меня есть следующий выпадающий список:
@Html.DropDownListFor(m => m.SelectedOrderCodeId, new SelectList(Model.OrderCodesList, "OrderCodeId", "DisplayString"))
Теперь OrderCodesList
имеет следующее: OrderCodeId
,DisplayString
& Percentage
Как я могу установить HiddenFor
значение для Percentage
значения, выбранного из этого выпадающего списка? (Ниже код должен быть завершен в соответствии с псевдо, потому что я не уверен, что делать дальше - если это вообще возможно).
@Html.HiddenFor(m => m.FinancialSupportPercentage, new { @Value = Model.OrderCodesList.Where
псевдо:
OrderCodesList.Select 'Percentage'
Where
'OrderCodeId'
is the `Selected 'OrderCodeId` from the `DropDownListFor`
2 ответа
Вот простой способ:
Учебный класс
public class Order
{
public int OrderCodeId { get; set; }
public string DisplayString { get; set; }
public int Percentage { get; set; }
}
контроллер
public JsonResult GetPercentage(int OrderCodeId)
{
var data = _dbContext.List
.FirstOrDefault(p => p.OrderCodeId == OrderCodeId)
.Percentage;
return Json(data, JsonRequestBehaviour.AllowGet);
}
Посмотреть
@Html.DropDownListFor(m => m.SelectedOrderCodeId, new SelectList(Model.OrderCodesList, "OrderCodeId", "DisplayString"))
@Html.HiddenFor(m => m.FinancialSupportPercentage)
<scripts>
$('#SelectedOrderCodeId').on('change', function () {
var selectedIndex = $(this).val();
$.ajax({
url: '/ControllerName/GetPercentage',
data: { OrderCodeId: selectedIndex },
method: 'GET',
success: function (result) {
$('FinancialSupportPercentage').val(result);
}
});
});
</scripts>
Похоже, вы хотите что-то на стороне клиента JavaScript. Код серверной части, который, я думаю, вам нужен:
@{
var entity = Model.OrderCodesList.FirstOrDefault(i => i.OrderCodeId == Model.SelectedOrderCodeId);
double percentage = 0;
if (entity != null { percentage = entity.Percentage }
}
@Html.Hidden("FinancialSupportPercentage", percentage)
Я использовал скрытый, поскольку он дает вам прямой доступ к значению; HiddenFor обычно извлекает значение из модели.
Вышеупомянутый подход работает хорошо, если вы все делали на сервере, и если это так, то это будет работать нормально. Но если пользователь меняет раскрывающийся список, хотите ли вы изменить скрытое? Если вы делаете, вам нужен Javascript.