我有一个Dictionary对象,该对象具有业务类型ID和问题列表。我的业务类型有所下降。现在,当我从下拉列表中选择一种业务类型时,我需要刷新页面上显示的问题列表
html:
<script src="~/lib/jquery/dist/jquery.js"></script>
<div id="" class="">
<div class="form-group">
<label>Select a Business Type *</label>
<select class="form-control" id="businessTypeSelectionModal">
<option value="">--Select---</option>
@foreach (var bt in Model.BusinessTypes)
{
<option value="@bt.Id">
@bt.Name
</option>
}
</select>
</div>
<label>Questions *</label>
</div>
jQuery:
<script type="text/javascript">
var selectedBusinessTypeId;
$(document).ready(function () {
$("#businessTypeSelectionModal").change(function () {
selectedBusinessTypeId = $("#businessTypeSelectionModal").val();
LoadQuestions(selectedBusinessTypeId);
});
});
function LoadQuestions(selectedBusinessTypeId)
{
html = '';
alert('BT id:' + selectedBusinessTypeId);
@foreach (var c in Model.Questions)
{
foreach (var q in c.Value)
{
if (c.Key == selectedBusinessTypeId) {
html += '<label value="@c.Key" class="" />' + @q.Description;
html += '<input type="textbox" />';
}
}
}
}
</script>
在下拉列表的选择更改上,我试图获取ID,将其传递给LoadQuestions()函数,在该函数中,我需要检查ID是否等于问题字典中的ID。如果是的话,我需要将问题显示为标签,并在每个问题旁边显示一个文本框。截至目前,我收到以下错误:
LoadQuestions()函数中的'selectedBusinessTypeId'和'html'变量->在当前上下文中不存在
任何帮助将不胜感激。有更好的方法吗?
答案 0 :(得分:0)
$("#businessTypeSelectionModal").val()
是否包含id或业务类型的值?
您可以通过此获取ID
selectedBusinessTypeId = $(“#businessTypeSelectionModal”)。find('option:selected')。attr('id');
答案 1 :(得分:0)
您将使用JSON将模型序列化为javascript变量,然后使用此javascript变量编写javascript代码:
function LoadQuestions(selectedBusinessTypeId)
{
html = '';
var questions = @Html.Raw(Json.Serialize(Model.Questions));
for (var type in questions) {
if (type == selectedBusinessTypeId) {
for (var i = 0; i < questions[type].length; i++) {
alert( questions[type][i].description)
//html += "<label value='" + questions[type][i].id + "' class='' />" + questions[type][i].description;
// html += "<input type='textbox' />";
}
}
}
}
假设Model.Questions的类型是:
public Dictionary<int, List<Question>> Questions { get; set; }
答案 2 :(得分:0)
正如Nan Yu所说,使用Json.Serialize解决了这个问题