我有以下下拉列表:
@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`
答案 0 :(得分:1)
这是一个简单的方法:
<强>类强>
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>
答案 1 :(得分:0)
听起来你可能想要客户端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。