这是我使用Razor的jQuery代码:
$("#GroupC_grup_name").attr('value', '@foreach (SelectListItem sel in (SelectList)ViewData["Gruplar"]){ @sel.Text }')
$("#GroupC_id").attr('value', '@foreach(SelectListItem sel in (SelectList)ViewData["Gruplar"]){ @sel.Value }')
我想将这些合并在一起,因为我不想两次调用ViewData["Gruplar"]
。
我可以这样做吗?
@foreach(SelectListItem sel in (SelectList)ViewData["Gruplar"]){
@:$("#GroupC_grup_name").attr('value', '@sel.Text');
@:$("#GroupC_id").attr('value', '@sel.Value');
}
我已经尝试了所有我能想到的但却无法实现我想要的东西。
答案 0 :(得分:9)
我仔细阅读并理解你想做什么。然而,你的例子是令人困惑的。 (似乎每个人都回答)
你在第二个例子中所做的事情应该可以正常工作,你可以将jQuery包装在<text></text>
元素中,如果这也有帮助的话。如果只有一个价值你可以
<script type='text/javascript'>
@{ var x = ((SelectList)ViewData["Gruplar"]).First(); }
$("#GroupC_grup_name").attr('value', '@x.Text');
$("#GroupC_id").attr('value', '@x.Value');
</script>
你可以通过多种方式在jquery中完成剃刀。它与带有html的剃刀基本相同。
你想在客户端执行 razor然后就不会发生这种情况。 Razor在被发送到客户端之前执行。
答案 1 :(得分:5)
您建议的代码应该有效,下面的代码使用字符串数组而不是SelectList
但原则应该相同,下面的代码已经过测试并且有效 -
@{String[] testarr = {"hello","bye"};}
@foreach(String sel in testarr){
@:$("#GroupC_grup_name").attr('value', '@sel');
@:$("#GroupC_id").attr('value', '@sel');
}
答案 2 :(得分:1)
据我了解,你想在选择SELECT项目时更新元素吗?
创建常规选择列表并添加以下jquery代码:
<script type="text/javascript">
$(function () {
$('#selectListId').change(function() {
$selectedItem = $("option:selected", this);
$("#GroupC_grup_name").val(selectedItem.html());
$("#GroupC_id").val(selectedItem.val());
});
});
</script>