当我开始使用 asp mvc3 时,我正在将我的脚本放在我的视图文件 (cshtml) 中。我这样做是这样的:在每个 cshtml 文件的底部,我放了我的脚本,....其中一些脚本使用 TempData,一切正常。
但后来有人告诉我,让用户看到我如何编写脚本是一个坏习惯。他们说我应该创建一个 js 文件并将我所有的脚本放在那里,我应该像这样调用它们:
<script src="@Url.Content("~/Scripts/myOwnLocalScripts.js")" type="text/javascript"></script>.
所以我这样做了,但似乎我的脚本现在无法读取 TempData 甚至会话 cookie。我的脚本中有这样一行:
var currentEmployee = '@System.Web.HttpContext.Current.Session["UserNumber"]';
$('.textBoxEmployeeNumber input[id="EmployeeId"]').val(currentEmployee);
它应该显示一个用户编号,但它显示“System.Web.HttpContext.Current.Session[“UserNumber”]”作为一个字符串......
此外,我的脚本中有这样的代码:
if ('@TempData["successMessage"]' != "" || '@TempData["successMessage"]' != null) {
function newAlert(type, message) {
$("#alert-area").append($("<div class='alert alert-success " + type + " fade in' data-alert><p><b> " + message + " </b></p></div>"));
$(".alert-success").delay(4000).fadeOut("slow", function () { $(this).remove(); });
}
newAlert('success', '@TempData["successMessage"]');
}
它应该仅在 Tempdata[successMessage] 包含一个值时显示,但它会在每次页面加载时一直显示,并将 '@TempData["successMessage"]' 显示为字符串...
我的错误可能是什么?