使用<;%=代码%>;在javascript中<;脚本>;标签

使用<;%=代码%>;在javascript中<;脚本>;标签,javascript,asp.net-mvc,model,embed,Javascript,Asp.net Mvc,Model,Embed,我正在使用ASP.NETMVC,并希望获得在javascript中使用的模型信息。我已经强键入了视图,因此能够在HTML中使用来获取模型数据 但是一旦我在标记中,我在使用时就没有intellisense(在Visual Studio中),一般来说,块应该只在Javascript中的引号内使用。因为您在引用文本中,Intellisense可能无法工作。它应该工作-您的C#应该在JavaScript执行客户端之前执行服务器端。智能感知可能只是被上下文搞糊涂了 我有时在PHP和JavaScript中使

我正在使用ASP.NETMVC,并希望获得在javascript中使用的模型信息。我已经强键入了视图,因此能够在HTML中使用
来获取模型数据

但是一旦我在
标记中,我在使用时就没有intellisense(在Visual Studio中),一般来说,块应该只在Javascript中的引号内使用。因为您在引用文本中,Intellisense可能无法工作。

它应该工作-您的C#应该在JavaScript执行客户端之前执行服务器端。智能感知可能只是被上下文搞糊涂了


我有时在PHP和JavaScript中使用这种技术。

您可以尝试使用单引号:

$.getJSON('<%=Url.Action("PopulateJournalOptions", "Evaluation", Model.ID) %>', populateJSON);
$.getJSON(“”,populateJSON);

在将字符串写入脚本标记时需要小心,因为它是javascript,期望字符串具有正确编码的特殊字符。此外,如果该字符串包含类似“”的内容,则可能会有浏览器不运行javascript而提前结束脚本块的风险

编码字符串的一种简单方法是使用JSON序列化程序,可能是JavaScriptSerializer()


var targetUrl=;
我认为这样更安全。您可能希望将此代码放在一个helper函数中,我只是在那里实例化了JavaScriptSerializer(),因此这是可能的最简单示例


这样做的一个副作用是表达式不在引号内,这听起来似乎有助于您最初的自动完成支持问题。请注意,Serialize()不仅将正确转义javascript字符串,还将转义对“”字符进行编码,这样“”场景就不会发生。

如果我错了,请纠正我,但我从未见过Url。使用的操作如下:

<%= Url.Action("PopulateJournalOptions", "Evaluation", Model.ID) %>

难道不是这样吗

<%= Url.Action("PopulateJournalOptions", "Evaluation", new { ID = Model.ID } ) %>

注意新建{ID=Model.ID}


Action使用对对象属性的反射来确定路由值是什么。由于int对象没有字段/属性,因此它不会检测任何内容。

发布一些代码。没有什么可以阻止您使用内部javascript。2008年没有intellisense支持(不确定他们是否在2010年修复了此问题)。如果没有代码示例,就无法提供帮助。
<script>
    var targetUrl = <%= (new JavaScriptSerializer()).Serialize("http://url/") %>;
</script>
<%= Url.Action("PopulateJournalOptions", "Evaluation", Model.ID) %>
<%= Url.Action("PopulateJournalOptions", "Evaluation", new { ID = Model.ID } ) %>