我有一个下拉列表,我在更改事件中调用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" })
以上不起作用,我不确定哪个是正确的语法,如果有的话。
答案 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%正确,但我想知道这是否能解决你的问题:
<...>