我可以使用这个从 MVC ASP.NET 传递一个变量:
var lastCategoryId = '<%=Model.CS.LastSelectedCategory %>';
这适用于字符串或整数,但我如何处理字符串数组?我试图以相同的方式传递数组,但变量设置为 System.String[] ?
我可以使用这个从 MVC ASP.NET 传递一个变量:
var lastCategoryId = '<%=Model.CS.LastSelectedCategory %>';
这适用于字符串或整数,但我如何处理字符串数组?我试图以相同的方式传递数组,但变量设置为 System.String[] ?
您可以使用这行简单的代码让 .NET 为您处理所有繁重的工作。
这假设您使用的是 MVC Razor 语法。
var yourJavaScriptArray = @Html.Raw(Json.Encode(Model.YourDotNetArray));
对于较新版本的 MVC,请使用:
var yourJavaScriptArray = @Html.Raw(Json.Serialize(Model.YourDotNetArray));
你可以用 JSON 序列化它。这种方式可以传递更复杂的值,而不必担心转义简单的引号、双引号等:
var categoriesList = <%= new JavaScriptSerializer().Serialize(new[] { "value1", "value2" }) %>;
编写一个 HTML 助手来做到这一点会更好:
public static class HtmlExtensions
{
public static string JsonSerialize(this HtmlHelper htmlHelper, object value)
{
return new JavaScriptSerializer().Serialize(value);
}
}
然后在您看来:
<script type="text/javascript">
var categoriesList = <%= Html.JsonSerialize(new[] { "value1", "value2" }) %>;
</script>
这应该做
var someArray=[<%foreach (var s in myStringArray){%>'<%=s%>',<%}%>];
像这样:
<script type="text/javascript">
var myArr = [<%=string.Join(",", strArr.Select(o => "\"" + o + "\"")) %>];
</script>
一个班轮:
var data = [@Html.Raw(String.Join(",", Model.MyArray.Select(i => "'" + i + "'")))];