调用js或jquery函数的函数时,直接传递ViewBag会提示对应的参数违法。
@if (!string.IsNullOrEmpty(ViewBag.Message))
{
var messages = ViewBag.Message;
<script type="text/javascript">
$(function () { p.success(ViewBag.Message); });
</script>
}
上述代码会显示如下错误:
既然ViewBag不合法,我们给他转换一下不就行了,我第一时间想到了Json,试验了好几种格式,最后发现Json.Serialize()方法可以满足我们的需求。此方法在.Net Core 3.1,.NET5,.Net 6 均被支持。
然后将转换后的值传给函数就好
@if (!string.IsNullOrEmpty(ViewBag.Message))
{
<script type="text/javascript">
//序列化ViewBag
var message = @Html.Raw(Json.Serialize(ViewBag.Message));
$(function () { p.success(message); });
</script>
}
关于Json.Serialize可以参考微软的使用手册
我们运行修改的jquery函数。成功.ing ! !