Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从asp.net-mvc传递到javascript的最佳实践_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

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

将数据从asp.net-mvc传递到javascript的最佳实践,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,最近我一直在使用ASP.NETMVC和Javascript/jQuery,我似乎正朝着一个方向前进,我总是需要将一些动态值“传递”给我的Javascript。当脚本出现在页面中时,我做了如下操作: var isEditable = <%=ViewData["editable"]%> var isEditable= 我喜欢这是如何快速和简单,就像我会注入一个值到HTML。但这有味道。真的,真的很糟糕。它打破了VisualStudio的智能感知和代码格式,使我的脚本难以阅读和理解 我

最近我一直在使用ASP.NETMVC和Javascript/jQuery,我似乎正朝着一个方向前进,我总是需要将一些动态值“传递”给我的Javascript。当脚本出现在页面中时,我做了如下操作:

var isEditable = <%=ViewData["editable"]%>
var isEditable=
我喜欢这是如何快速和简单,就像我会注入一个值到HTML。但这有味道。真的,真的很糟糕。它打破了VisualStudio的智能感知和代码格式,使我的脚本难以阅读和理解

我想到了另一个解决方案,将我的数据传递到一个隐藏字段,并使用Javascript引用

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

var isEditable=$(“#可编辑”).attr(“值”);
这可能更好,因为它保持了脚本的完整性,并允许我将其移动到外部.js文件中。但这个解决方案似乎也不太理想。还是只有我


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

您将以某种方式注入该信息。在我看来,你的第一个例子和第二个没有什么不同

另一个解决方案是使用一个JS类(或原型?)来接受一个选项对象。尽管不可否认,它与您给出的示例并没有什么不同。但是,也许你还是想走这条路

$(function () {
    myClass.init({ isEditable: <%=ViewData["editable"]%>, 
        another: '<%=ViewData["another"]%>' });
});
$(函数(){
myClass.init({isEditable:,
另一个:“}”;
});

我有时通过JSON序列化程序将配置对象写入页面,从而将数据传递到页面:

var pageConfig = <%= ServerConfig.ToJson() %>;

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

我认为@ağdaş是一个很好的观点,但记住也要检查服务器端。如果将字段设置为“只读”,则没有什么可以阻止用户修改该标志、更改只读字段和提交。

Ajax的整个业务是异步加载信息。如果您正在做Ajax的工作(加载信息并将其保存在变量中),那么这就失去了它的能力。为什么不试试JQuery并使用它的Ajax,或者使用函数动态加载内容呢。这将帮助您更快地加载页面。

使用AJAX将数据从模型中“拉”到控制器中的某种数据存储中如何?我认为AJAX在我所指的这种情况下可能会有些过分。。。我的脚本通常只需要知道控制器/模型中的一些数据(在初始页面执行时已经存在的数据),因此发出另一个网络回调控制器似乎有点过分。这不影响可更改性吗?至少每个页面GET可能返回不同的页面(不同的配置)。当考虑代理服务器中的缓存时,现在每个用户都有一个不同版本的页面。这是一个值得关注的问题吗?这是一个有趣的选项,但我不确定我是否完全理解您是如何实现这个ServerConfig类的。事实上,每个页面GET可能返回一组不同的数据,因此pageConfig最终不需要从每个页面的ViewData设置吗?不管怎样,我一定会尝试/考虑你的其他建议(Json和一个全局js变量)-谢谢@Kurt-是的,我认为您必须从ViewData(可能是匿名类型)构建它。我的意思不是说可以去掉ViewData,而是说可以限制在页面上注入服务器数据的位置数。
var isEditable = pageConfig.isEditable;