js变量不能与razor混合使用,请教正确使用方式?
var selectItem = $("#ulList .nav-item").find(".active").text();
var setVal = @lst.FirstOrDefault(o => o.Name == @selectItem)?.SetVal;//@selectItem不能与razor混合使用
要在Razor视图中使用JavaScript变量,可以通过以下方式将其传递到视图中:
例如,在你的HTML页面中添加以下代码:
<script>
var myVariable = "Hello World!";
</script>
例如,在Razor视图中添加以下代码:
@{
string myString = "<script>document.write(myVariable)</script>";
}
@Html.Raw(myString)
这将输出JavaScript变量myVariable
的值(即“Hello World!”)。
请注意,为了防止跨站点脚本攻击,Razor默认会对文本进行编码,因此必须使用Html.Raw
方法来告诉Razor不要对变量进行编码。
1、js中嵌套C#的if结构
混编代码:
浏览器截图:
2、js中自有的if结构
当if语句的判断条件用到字符串类型的C#变量的值时,需要额外加上”“,否则C#变量的值会被当做js中的变量名,从而引发错误。
js中用到bool类型的C#变量的值时,也需要额外加上”“,否则报错:True is not defined或False is not defined,因此推断js中用到char、DateTime等其他类型的C#变量的值时,均需要额外加上”“,先把C#变量的值变为普通字符串,然后才能进行其他操作。int、float不需要额外加上”“。
不加”“的混编代码:
不加”“的浏览器截图:
加”“的混编代码:
加”“的浏览器截图:
3、js中嵌套C#的foreach(){ if(){ } }结构
混编代码:
浏览器截图:
4、js中自有的foreach(){ if(){ } }结构
js不能识别List< string>类型的数据,可以使用json数组来代替List< string>,前台对json数组进行循环操作即可。js中要用for(var index in array){ }来做循环操作,此处的index指的是数组索引值。
后台代码如下:
var array=@Html.Raw(@Model.CityListJson);的作用等价于本方法中注释掉的三行代码的作用,前台代码如下:
浏览器截图如下: