Javascript 为什么我没有声明变量

Javascript 为什么我没有声明变量,javascript,Javascript,我的部分观点如下 @Model.ServerDetails <div> ..... various markup </div> <script type="text/javascript"> var bs = '@Model.BackupServer'; if (bs == null) { bs = ""; } var bssn = bs + '|' + '@Model.ServerName'; $(d

我的部分观点如下

@Model.ServerDetails
<div>
..... various markup
</div>
<script type="text/javascript">
    var bs = '@Model.BackupServer';
    if (bs == null) {
        bs = "";
    }
    var bssn = bs + '|' + '@Model.ServerName';

    $(document).ready( function() {
        if (bs != "") {
          $getJSON('@UrlContent("~/Details/OtherBackedUpServers?bsn=" + bssn)', function(returnedServers) {
             ..... removed for brevity...
          }
        }
    });
@Model.ServerDetails
..... 各种标记
var bs='@Model.BackupServer';
如果(bs==null){
bs=“”;
}
var bssn=bs+'|'+'@Model.ServerName';
$(文档).ready(函数(){
如果(bs!=“”){
$getJSON('@UrlContent(“~/Details/otherbackedupserver?bsn=“+bssn)”,函数(returnedServers){
…为了简洁起见删除了。。。
}
}
});
不幸的是,$getJSON()参数中的bssn显示错误:“bssn”未声明。由于其保护级别,它可能无法访问

有人能解释一下为什么我能纠正它吗

谢谢

您无法将JavaScript(客户端)变量传递到
Url.Action
,因为它是在服务器端处理的

作为一种解决方法,您可以使用占位符生成url。然后使用
.replace()
方法生成实际的url

var url = '@Url.Action("OtherBackedUpServers", "Details", new { bsn= -1})';
url = url .replace('-1', bssn);
$.getJSON(url );

或者,最好将变量作为有效负载传递

$.getJSON('@Url.Action("OtherBackedUpServers", "Details")', { bsn : -1});
或者写:

$getJSON('@UrlContent("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
             ..... removed for brevity...
          }
校正

$getJSON('@Url.Action("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
             ..... removed for brevity...
          }

看起来你把服务器端代码和客户端代码弄混了。你不能将客户端变量传递给服务器端函数。服务器代码在页面发送到客户端之前得到评估。在给出正确答案的客户端之间使用了这个,但使用了Url.Action而不是Url.Content,这可能是一个疏忽。我的坏-只是使用了Copy&Paste;)非常感谢