【发布时间】:2017-01-03 18:46:06
【问题描述】:
我正在使用@Html.DropDownListFor。填充下拉列表没有问题,但我无法使用 JQuery 设置选定的值。这是代码的简化版本。
@{
var listItems = new List<ListItem>
{
new ListItem { Text = "Select Question", Value = "Select Question" },
new ListItem { Text = "test", Value = "test" }
}
<div class="row">
@Html.LabelFor(m => m.SecurityQuestion, new { @class = "control-label" })
</div>
<div class="row">
@Html.DropDownListFor(m => m.SecurityQuestion, new SelectList(listItems, "Value", "Text"), new { id = "security", @class = "securityALLQuestion" })
</div>
<div class="row">
@Html.LabelFor(m => m.SecurityQuestion1, new { @class = "control-label" })
</div>
<div class="row">
@Html.DropDownListFor(m => m.SecurityQuestion1, new SelectList(listItems, "Value", "Text"), new {id="security1", @class="security" })
</div>
这是我设置它的 Javascript 函数。我从#security 下拉列表中获取所有值,然后使用它来设置#security1 下拉列表。
$('.security').on('change', function () {
var values = [];
var optionValues = [];
$('#security option').each(function () {
values.push($(this).attr('value'));
});
for (var i = 0; i < values.length; i++) {
optionValues[i] = "<option value=\"" + values[i] + "\">" + values[i] + "</option>";
}
var temp ='test'
$('#' + 'security1').html('').html(optionValues);
$('#' + 'security1').val(temp);
})
values[] 和 optionValues[] 的值符合预期。
在检查控制台时,我得到了 temp 的值,但整个语句的警报为空。我错过了什么吗?
可能的问题:是不是因为我只设置了问题的值而不是文本?
【问题讨论】:
-
控制台有错误吗?
-
@Alexandru-IonutMihai 控制台没有错误。
-
请试试这个:
$('#security1').val(temp). -
不改变任何东西。我在引用该控件时存在一些问题。
-
我想我遇到了您遇到的问题:将
new {id="security1"}更改为new {@id="security1"}。您在id之前缺少@符号。另一种解决方案(没有另一个id)是直接使用$('#SecurityQuestion1').val(temp)。
标签: javascript c# jquery asp.net-mvc razor