我在cshtml页面的@ {}里面有一个var变量。我想在javascript中访问此变量。 可能吗?? 我怎么能这样做?
@{
var array=[""];
}
答案 0 :(得分:6)
您可以尝试以下方法:
@{
var array = new [] {"foo", "bar"};
}
<script type="text/javascript">
var array = [@Html.Raw(String.Join(",", array.Select(s => "'" + s + "'")))];
alert(array[1]);
</script>
它将C#数组序列化为JavaScript格式为[“foo”,“bar”]。
答案 1 :(得分:3)
这是您何时可以考虑使用JSON的完美示例。假设您正在使用ASP.NET Web页面(而不是Web Forms / MVC)进行开发,请在App_Code目录中使用以下代码创建一个名为Javascript.cshtml的帮助文件:
@using System.Web.Script.Serialization;
@helper ToJson(object obj) {
var ser = new JavaScriptSerializer();
@Html.Raw(ser.Serialize(obj))
}
现在,如果您的主页面可以像这样引用帮助程序:@Javascript.ToJson(myObj)
。因此,在您的页面中,您可能会执行以下操作:
@{
var myCSharpObj = new { First = "1st", Second = "2nd" };
}
<script language="javascript">
var myJSObj = @Javascript.ToJson(myCSharpObj);
alert(myJSObj.Second);
</script>
答案 2 :(得分:0)
由于浏览器中实际上并不存在变量,因此您需要使用某种类型的AJAX技术。
普通的旧ASMX Web服务可能是您最好的选择。
当然,如果您只是想要它的初始值,您可以在页面构图期间将其设置为文字。
我不熟悉确切的格式。