将数据从asp.net-mvc传递到javascript的最佳实践

Kur*_*ler 33 javascript asp.net-mvc jquery

我最近一直在使用ASP.NET MVC和Javascript/jQuery,我似乎正朝着一个方向前进,我总是需要将一些动态值传递给我的javascript.当脚本在页面中时,我做了类似这样的事情:

var isEditable = <%=ViewData["editable"]%>
Run Code Online (Sandbox Code Playgroud)

我喜欢这样快速简单,就像我在HTML中注入一个值一样.但这闻起来.真的,非常糟糕.它打破了Visual Studio的智能感知和代码格式化,使我的脚本难以阅读和理解.

在我看来,另一个解决方案是将我的数据传递给隐藏字段,并使用Javascript引用...

<input type="hidden" id="editable" value="<%=ViewData["editable"]%>" />
var isEditable = $("#editable").attr("value");
Run Code Online (Sandbox Code Playgroud)

这可能会更好,因为它保持脚本完整,并允许我将其移动到外部.js文件.但是这个解决方案的某些东西看起来也不理想.还是只是我?

有人可以推荐将数据传递到脚本的解决方案和最佳实践吗?如果我的脚本最终严重依赖控制器中的viewdata,那么我是走错了路吗?

Gab*_*art 11

我有时通过JSON序列化器将配置对象写入页面来将数据传递给我的页面:

var pageConfig = <%= ServerConfig.ToJson() %>;
Run Code Online (Sandbox Code Playgroud)

你需要自己编写ToJson方法的地方.这样可以很好地保存页面状态,因此只有一个位置可以注入服务器值.从现在开始的一切都是纯粹的javascript.在您的示例中,您可以执行以下操作:

var isEditable = pageConfig.isEditable;
Run Code Online (Sandbox Code Playgroud)

即使在外部js文件中,如果pageConfig是全局的.但是,在这种情况下,您应该正确命名它:MY_APP.pageConfig也许.