【发布时间】:2011-01-07 15:20:12
【问题描述】:
我想首先说我的代码运行良好,这更像是一个“如何最好地做到这一点”的问题。
所以我的.aspx 文件中有这样的代码:
function EditRelationship() {
var projects=<%= GetProjectsForEditRelationship() %>;
// fill in the projects list
$('#erProjectsSelect').empty();
for(var i in projects)
$('#erProjectsSelect').append('<option value='+projects[i][0]+'>'+projects[i][1]+'</option>');
var rels=<%= GetRelationshipsForEditRelationship() %>;
// etc
}
再次,它工作正常。问题是 VS2008 在这样的代码上有点窒息,它在标签中强调 < 字符(带有相关警告),然后拒绝为其余的 javascript 提供代码完成。 它也拒绝再格式化我的文档,导致解析错误。最后一部分是我最大的烦恼。
我猜我可以将其中的一些放在evals 中,但是添加额外的层和运行时性能命中只是为了关闭 VS 似乎有点愚蠢,而且它并不总是一个选项(我不记得在我的脑海中,这不是一个选择,但相信我,我有一个奇怪的结构)。
所以我的问题是,你如何最好地写这个(最好意味着最少的 VS 投诉)? eval 和 ajax 调用都不适合这个 imo。
【问题讨论】:
-
我猜
GetProjectsForEditRelationship()和GetRelationshipsForEditRelationship()返回逗号分隔的字符串或数组? -
是的,基本上是 JSON 数据,所以
eval和 ajax 调用都可以。我只是不想要这样一点好处的开销。我很确定我会坚持这一点,但问起来永远不会有坏处! -
附加引号,因为它是一个变量,例如
var projects='<%= GetProjectsForEditRelationship() %>';- 我一直在使用它,VS2008 和 2010 并没有说它是错误的,并且一直给我智能感知。 -
附带说明,
projects[i][1]是用户可编辑的值吗?如果是这样,您可能有 XSS 漏洞:) -
@Blindy 顺便说一句,我认为始终尝试在性能和编写方式优雅的代码之间取得平衡非常重要。很高兴看到你有同样的想法。我现在正在一个网站上工作,其中每一行都是 response.write,因此您甚至无法在设计器中查看页面。不是我需要;)
标签: javascript asp.net servertag