我正在尝试将以下 razor 语法重新编码为可行的代码,但遇到了困难:
var ServiceIndex = @ViewBag.ServiceID ;
var ServiceName = @ViewBag.ServiceName ;
var ServiceNotes = @ViewBag.ServiceNotes ;
我的问题是,现在这 3 个数组的 ViewBag 是空的,因此它在单独的分号上呕吐。
最佳答案
您需要在服务器端将其转换为 JSON。
<script>
var ServiceNotes = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceNotes)));
var ServiceName = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceName)));
var ServiceIndex = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceIndex)));
</script>
然后直接在JS中访问即可。
JsonConvert 正确处理了空数组,因此,如果它为空,您将得到类似的内容
var ServiceNotes = [];
为了方便调试并避免嵌套函数调用,您还可以拆分序列化和输出。
@{
string serviceNotesJson = JsonConvert.SerializeObject(ViewBag.ServiceNotes);
string serviceNameJson = JsonConvert.SerializeObject(ViewBag.ServiceName);
string serviceIndexJson = JsonConvert.SerializeObject(ViewBag.ServiceIndex);
}
@section scripts
{
<script>
var ServiceNotes = @(Html.Raw(serviceNotesJson));
var ServiceName = @(Html.Raw(serviceNameJson));
var ServiceIndex = @(Html.Raw(serviceIndexJson));
</script>
}
关于javascript - 如何使用 Razor 语法将数组从 ViewBag 转换为 JScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658036/