djd*_*d87 8 asp.net-mvc intellisense visual-studio-2010 asp.net-mvc-2
我正在尝试在我的内容页面中将一些模型属性添加到我的JavaScript中:
$(document).ready(function () {
createPager(1, <%=Model.TotalPages %>);
createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>);
});
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否是设计的?你不打算将模型属性与JavaScript结合起来吗?或者这是一个错误?
这按预期工作.但是,<% ... %>
在实际编写代码时,我在标记中没有任何Intellisense .如果我在<script>
标签中写任何代码,那么就没有Intellisense.如果我直接去标签下</script>
和类型<% Model.... %>
,然后繁荣,我再次有智能感知.
更新:22/10/2010
刚刚阅读Scott Guthrie的最新博客文章,看来这个功能很快就会推出ASP.Net MVC 3即将推出(也可能用于测试版):
注意:本月早些时候的Beta版尚未启用Razor文件中的Visual Studio代码/标记智能感知和着色.你会看到这会在几周后出现 - 它将支持Razor文件中HTML,JavaScript,CSS和C#/ VB代码的完整代码智能感知.
我认为也没有语法突出显示.不确定这是一个错误还是一个功能,但是AFAIK,以这种方式组合代码并不是一个好习惯.通常内联javascript不是一个好习惯,但是如果你使用它,将模型属性与它结合起来,然后决定将脚本提取到一个单独的js文件中,你的代码就会中断.因此,使用您的Model属性填充隐藏字段并使用jQuery在js中读取它们是很常见的,例如:
<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" />
<input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" />
...
// in js
$(document).ready(function () {
createPager(1, $("#valTotalPages").val());
createUnprocessedPager(1, $("#valTotalUnprocessedPages").val());
});
Run Code Online (Sandbox Code Playgroud)
因此缺乏语法突出显示和智能感知可能是一个错误,但也可能是一种阻止某些代码模式的方法.
您将在引号“”之类的属性内的视图中失去智能感知。
<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" />
Run Code Online (Sandbox Code Playgroud)
或者如果它出现在 Javascript 块内。
<script type="text/javascript">
<%= DateTime.Today.ToShortDateString() %>
</script>
Run Code Online (Sandbox Code Playgroud)
我认为在这些场景中应该有 Intellisense,所以我会说这是一个错误,并希望 Visual Studio 的未来更新能够解决并解决这个问题。
归档时间: |
|
查看次数: |
631 次 |
最近记录: |