我有SelectList
代表订单的投放类型。
交货类型参考数据具有通常的代码/描述,但还有一个额外的布尔属性,指示是否需要为所选类型输入更多信息。
因此,对于紧急交付,需要额外的数据。如果选择了紧急情况,则其他数据输入字段将设置为可见,否则将隐藏
我的ViewModel
包含<List>ReferenceDeliveryTypes
,其中包含3个属性。
我已经从ViewModel数据
SelectListItems
@Html.DropDownListFor(model => model.DeliveryTypeCode,
new SelectList(Model.ReferenceDeliveryTypes as System.Collections.IEnumerable,
"DeliveryTypeCode", "DeliveryTypeDescription"), new { id = "ddlDeliveryType" })
如何在更改传递类型时调用jQuery函数,传递所选代码并检查该代码的Model.ReferenceDeliveryTypes
以查看附加数据属性是否为true / false以显示/隐藏其他字段div
?
我设法调用jQuery函数来传递值。
$(function () {
$('#ddlDeliveryType').change(function () {
var value = $(this).val();
alert(value);
});
});
答案 0 :(得分:1)
我不知道您是否可以使用选择列表执行此操作,但我建议使用以下选项:
UPDATE
对于隐藏字段选项,如果您使用123|456|789|
之类的内容,然后使用indexOf
将|
附加到所选ID。
答案 1 :(得分:0)
我将Model.ReferenceDeliveryTypes转换为JSON列表,允许我从jQuery访问它。
可能不是最好的方式,但它允许我在客户端上做所有事情,而不是进行AJAX回调。我现在可以显示/隐藏if块内部。
认为值得记录我所做的事情,因为之前我没有遇到@Html.Raw(Json.Encode
,这对于想要从jQuery中访问模型数据的人来说可能是有用的。
欢迎任何其他评论。
<script type="text/javascript">
var ReferenceDeliveryTypeJsonList=@Html.Raw(Json.Encode(Model.ReferenceDeliveryTypes))
</script>
@Html.DropDownListFor(model => model.DeliveryTypeCode,
new SelectList(Model.ReferenceDeliveryTypes.ReferenceDeliveryType as System.Collections.IEnumerable,
"DeliveryTypeCode", "DeliveryTypeDescription"), new { id = "ddlDeliveryType" })
$(function () {
$('#ddlDeliveryType').change(function () {
var selectedDT= $(this).val();
$.each(ReferenceDeliveryTypeJsonList, function (index, item) {
if (selectedDT === item.DeliveryTypeCode) {
alert("match " + selectedDT);
}
});
});
});