我在部分视图中有以下内容......
@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...
}
}
});
$ getJSON()参数中的 bssn 显示错误:未声明'bssn'。由于其保护级别,它可能无法访问。
有人可以解释为什么以及如何纠正它?
由于
答案 0 :(得分:1)
您无法将JavaScript(客户端)变量传递给Url.Action
,因为它是在服务器端处理的。
作为解决方法,您可以使用占位符来生成网址。然后使用.replace()
方法生成实际网址。
var url = '@Url.Action("OtherBackedUpServers", "Details", new { bsn= -1})';
url = url .replace('-1', bssn);
$.getJSON(url );
或者,更好地将变量作为有效载荷传递
$.getJSON('@Url.Action("OtherBackedUpServers", "Details")', { bsn : -1});
答案 1 :(得分:0)
或写:
$getJSON('@UrlContent("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
..... removed for brevity...
}
<强> CORRECTION 强>
$getJSON('@Url.Action("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
..... removed for brevity...
}