asp.net-mvc-2 – 将模型数据传递给外部javascript
发布时间:2020-12-16 09:34:09 所属栏目:asp.Net 来源:网络整理
导读:有没有办法将模型数据传递给外部 javascript,而我的View上没有隐藏变量.我使用谷歌地图显示图钉,地图是通过javascript加载的,同时我有(大)纬度列表,经度信息作为我的模型数据的一部分,在我的请求中提取.我不想在我的html中有一长串隐藏变量,还要减少一次ajax
有没有办法将模型数据传递给外部
javascript,而我的View上没有隐藏变量.我使用谷歌地图显示图钉,地图是通过javascript加载的,同时我有(大)纬度列表,经度信息作为我的模型数据的一部分,在我的请求中提取.我不想在我的html中有一长串隐藏变量,还要减少一次ajax调用服务器来获取我的javascript中所需的信息(lat / lon).有没有办法有效地做到这一点?
谢谢. 解决方法
最简洁的答案是不.”
如果需要在视图旁边返回原始数据模型,唯一的选择是在视图中嵌入数据.这两个选项是: 在一个HTML元素(一种尴尬的IMO): <div id="myData" data-model="{"Name": "Jason"}"></div> 在脚本中: <script> var myData = {Name: Jason}; </script> 我更喜欢第二种方法,因为没有HTML转义. 我同意这样做有点烦人,但是一个请求是一个请求……它只是一个数据流.以这种方式引导数据是相当普遍的,因此未来版本的MVC可能会有一种更简洁的方式来返回它(但它可能看起来就像我上面的一个例子). 除此之外,正如您所提到的,您可以执行额外请求以仅在JSON响应中接收模型. 编辑: 我有一个HtmlHelper我的袖子来帮助这个…… public static MvcHtmlString ToScriptVariable<T,TMember>(this T value,Expression<Func<T,TMember>> expression) where T : class { var member = expression.Body as MemberExpression; if (member == null) throw new ArgumentException("Expression must be a member expression.","expression"); var expressionValue = expression.Compile()(value); var serializer = new JavaScriptSerializer(); var seralizedData = serializer.Serialize(expressionValue); var tag = new TagBuilder("script"); tag.Attributes.Add("type","text/javascript"); tag.InnerHtml = String.Format(CultureInfo.InvariantCulture,"var {0} = {1};",member.Member.Name,seralizedData); return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); } 用法: <%: Html.ToScriptVariable(x => Model.MyData) %> 结果: <script type="text/javascript">var MyData = "(whatever)"</script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – DotLess @import
- asp.net-mvc – 如何从自定义模型绑定器中删除魔术字符串?
- asp.net-mvc-3 – 如何关闭我的整个ASP.NET MVC 3网站的缓存
- Asp.net .net(C#) 获取当前命名空间,类名,方法名的方法
- asp.net-mvc – 使用ValueInjecter在具有不同属性名称的对象
- asp.net – Crystal Report Viewer控件未加载报表中的图像
- azure – 错误System.BadImageFormatException服务结构
- 反射及LINQ结果集转换dataTable并序列化 将DataTable序列
- asp.net-mvc – Web项目需要使用Razor语法3.0.0.0缺少Web组
- asp.net – 有一种简单的方法可以从.NET用户控件中删除“ct
推荐文章
站长推荐
- Asp.net .net(C#) 获取当前命名空间,类名,方法名
- ASP.NET核心EF6身份
- asp.net – 如何在StackedBar中值为零时隐藏数据
- asp.net-mvc – MVC5自托管OWIN返回404
- 如何在ASP.NET应用程序中避免SQL注入攻击?
- asp.net捕获全局未处理异常的几种方法
- asp.net – Telerik RadDatePicker在2030年之后没
- ASP.NET ReportViewer Google Chrome CPU使用情况
- asp.net-mvc – 在ASP.Net MVC中,如何创建将java
- asp.net-mvc – 测试ASP.NET MVC 2中的模型绑定
热点阅读