将服务器端mvc变量传递给javascript
我正在查看反馈,了解将服务器端变量从控制器操作传递到站点html标记并供站点上的javascript使用的最佳和最简单的方法将服务器端mvc变量传递给javascript,javascript,asp.net-mvc,asp.net-mvc-4,Javascript,Asp.net Mvc,Asp.net Mvc 4,我正在查看反馈,了解将服务器端变量从控制器操作传递到站点html标记并供站点上的javascript使用的最佳和最简单的方法 我正在使用asp.net mvc4并试图找到推荐的方法。您有两个选择 一种是将数据属性或id附加到元素,并使用javascript获取它们 使用razor视图: <div id="someid" data-name="@item.attribute"></div> 或者,可以将数据直接渲染到脚本标记中 使用剃须刀: var somevar =
我正在使用asp.net mvc4并试图找到推荐的方法。您有两个选择 一种是将数据属性或id附加到元素,并使用javascript获取它们 使用razor视图:
<div id="someid" data-name="@item.attribute"></div>
或者,可以将数据直接渲染到脚本标记中
使用剃须刀:
var somevar = "@item"
您还可以对更复杂的对象进行Json编码
var somevar = @Html.Raw(Json.Encode(object))
谷歌搜索给出了大量的结果…@emrenevayeshirazi:哦,这是一个多么有用的关于堆栈溢出的评论啊!同样为了强调Declan的答案,如果您使用
var somevar=“@item”
method您必须像他那样将其包装在引号中,否则可能会生成一个varsomevar=代码>。对于字符串之类的东西,这似乎是直截了当的,但在处理可为空的布尔值、可为空的整数等时就不那么明显了。为了更好地分离内容和代码,我推荐第一种方法(在div或隐藏的输入标记中)。当您需要在.cshtml文件中引入-tag时,您就做错了。Off-对于使用webform的用户:使用var somevar=“”
我认为最好的方法是data attr,因为您的UI代码中没有任何脚本依赖项。函数服务(){this.data=$(“..”).data('info');};var服务=新服务();Service.prototype={doSomething:function(){alert(this.data());}
var somevar = @Html.Raw(Json.Encode(object))