将ViewBag传递给js函数

时间:2016-03-03 12:54:44

标签: javascript asp.net-mvc dropdown

我有一个下拉列表,我在更改事件中调用js函数。 在视图中:

@Html.DropDownList("RaceId", ViewData["Races"] as List<SelectListItem>, new { @onchange = "CallChangefunc(this.value)", @class="form-control" })

和我的js:

<script>
function CallChangefunc(val) 
{ 
//called in Index page when dropdown list changes
 window.location.href = "/Index/" + val;
}
</script>

我想要的是在我传递ViewBag值的js函数中添加一个新参数,如:

@Html.DropDownList("RaceId", ViewData["Races"] as List<SelectListItem>, new { @onchange = "CallChangefunc(this.value,ViewBag.id)", @class="form-control" })

以上不起作用,我不确定哪个是正确的语法,如果有的话。

2 个答案:

答案 0 :(得分:0)

首先,使用unobtrusive javascript代替onchange attribute。如果您的视图中包含javascript,则可以使用ViewBag访问'@ViewBag'

$('#RaceId').on('change', function() 
    { 
        var value = $(this).val(); 
        var id = '@ViewBag.id'
    }
);

或者,如果您在其他文件上运行javascript,则可以使用Hidden input并在脚本中获取此值:

@Html.Hidden("Id", ViewBag.id)

并在你的脚本中:

$('#RaceId').on('change', function() 
    { 
        var value = $(this).val(); 
        var id = $("Id").val();
    }
);

答案 1 :(得分:0)

虽然斯蒂芬的评论100%正确,但我想知道这是否能解决你的问题:

<...>