有没有办法在剃刀内使用jquery代码?

时间:2011-10-20 11:33:05

标签: jquery asp.net-mvc-3 razor

这是我使用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');
 }

我已经尝试了所有我能想到的但却无法实现我想要的东西。

3 个答案:

答案 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>