将c#插入内联javascript

时间:2014-03-14 12:36:24

标签: c# javascript razor

是否可以将c#变量插入内联javascript函数?

我使用razor传递选择框ID。

<select id="@itemid" style="float:right" class="input" onchange="window.location.href='@url3' + 'booking/' + '?d=' + 'this.form.@itemid.options[this.form.@itemid.selectedIndex].value">
</select>

以上不起作用。我得到一个&#34;不包含&#39; form&#39;&#34;的定义。错误。

2 个答案:

答案 0 :(得分:1)

试试这个

onchange='@("string.format("window.location.href='{0}' + 'booking/' + '?d=' + 'this.form.{1}.options[this.form.{1}.selectedIndex].value", @url3, @itemid))'

答案 1 :(得分:0)

是。您可以在javascript中使用Razor语法,只要它在视图文件中即可。

我更喜欢保持标记干净而没有行为(关注点分离)并以不引人注目的javascript方式保持该行为。我会保留HTML 5 数据属性 来设置url3变量的值。

<select id="@itemid" style="float:right" class="input" data-targeturl="@url3">
</select>

并在javascript中,使用change类收听SELECT元素的.input事件并重定向到新页面

$(function(){

 $("SELECT.input").change(function(e){
   var _this=$(this);
   var newUrl=_this.data("targeturl")+"/booking?d="+_this.val();
   window.location.href=newUrl;
 });

});