让我们说我有一个带有JavaScript的ASP.NET页面。通常,将服务器端方法/属性调用的结果注入JavaScript很容易,如以下常见示例所示:
var myUsernameControl = document.getElementById('<%= txtUsername.ClientID %>');
到目前为止一切正常。
现在让我们假设我的JavaScript表达式需要 numeric 参数而不是字符串参数,例如。
var someValue = someJavaScriptFunction(<%= someServerSideProperty %>, true);
或
var someNumber = <%= someServerSideProperty %>;
这样可行,但它会在Visual Studio中产生编译时警告(&#34;语法错误&#34;)。显然,内置JavaScript编译器将此视为
var someValue = someJavaScriptFunction(, true);
var someNumber = ;
并产生错误。
如何摆脱警告?我不想将<%= someServerSideProperty %>
括在单引号或双引号中,因为这会改变JavaScript代码的语义。
我确定这是一个常见的问题,必须是一个漂亮的,规范的解决方案,我只是找不到它......
答案 0 :(得分:3)
您可以使用双引号括起<%= ... %>
代码,并在其前加+
符号将其转换为数字值:
var someNumber = +"<%= someServerSideProperty %>";
由于
var a = +"10";
a === 10 // is true;
答案 1 :(得分:1)
我知道这是低效的,但它可以摆脱服务器端和客户端错误并起作用:
var value = parseInt("<%= someServerSideIntVariable %>");
或MVC剃刀:
var value = parseInt("@Model.MyIntProp");
答案 2 :(得分:0)
我只是在一些常见的javascript文件中定义了一个虚函数:
ServerValue = function (x) { return x; }
所以在aspx或cshtml中我可以写:
var someNumber = ServerValue(<%= someServerSideProperty %>);
var someString = ServerValue('<%= someServerSideProperty %>');
var someValue = someJavaScriptFunction(
ServerValue(<%= someServerSideProperty %>),
true);