Javascript 如何在写在js代码中的TempData Razor MVC中检查空值
我试图检查在javascript代码中编写的TempData Razor MVC中的空值,但不幸的是,它不起作用 无论TempData值是否为null,该条件始终为trueJavascript 如何在写在js代码中的TempData Razor MVC中检查空值,javascript,c#,asp.net-mvc,razor,tempdata,Javascript,C#,Asp.net Mvc,Razor,Tempdata,我试图检查在javascript代码中编写的TempData Razor MVC中的空值,但不幸的是,它不起作用 无论TempData值是否为null,该条件始终为true if ('@TempData["Error"]' != null) { alert("Problem" + '\n' + "@TempData["error"]"); } else { alert("The file Uploaded Successfully"); } 我怎么检查? 如果有其他选择
if ('@TempData["Error"]' != null) {
alert("Problem" + '\n' + "@TempData["error"]");
} else {
alert("The file Uploaded Successfully");
}
我怎么检查?
如果有其他选择,请告诉我
谢谢
编辑:
上面的代码是jQueryAjax请求代码的一部分
<script>
$body = $("body");
$(document).on({
ajaxStart: function () { $body.addClass("loading"); },
ajaxStop: function () { $body.removeClass("loading"); }
});
$(document).ready(function () {
$("#upload").click(function () {
var data = new FormData();
//Add the Multiple selected files into the data object
var files = $("#files").get(0).files;
for (i = 0; i < files.length; i++) {
data.append("files" + i, files[i]);
}
//data.append("id", '');
data.append("id", '@Model.NoteID');
//Post the data (files) to the server
if (files.length > 0) {
$.ajax({
type: 'POST',
url: "@Url.Action("Upload","Files")",
data:data,
contentType: false,
processData: false,
success: function (data) {
if ('@TempData["Error"]' != null) {
alert("Problem" + '\n' + "@TempData["error"]");
} else {
alert("file uploaded successfully");
}
},
error: function () {
alert("Fail");
},
});
}
});
});
</script>
$body=$(“body”);
$(文件)({
ajaxStart:function(){$body.addClass(“加载”);},
ajaxStop:function(){$body.removeClass(“加载”);}
});
$(文档).ready(函数(){
$(“#上载”)。单击(函数(){
var data=new FormData();
//将多个选定文件添加到数据对象中
var files=$(“#files”).get(0).files;
对于(i=0;i0){
$.ajax({
键入:“POST”,
url:“@url.Action(“上载”、“文件”)”,
数据:数据,
contentType:false,
processData:false,
成功:功能(数据){
如果(“@TempData[“Error”]”!=null){
警报(“问题“+”\n“+”@TempData[“错误”]”);
}否则{
警报(“文件上传成功”);
}
},
错误:函数(){
警报(“失败”);
},
});
}
});
});
引用值,因此如果@TempData[“Error”]
为null
,它将转换为空字符串。您可以使用.length
检查它,但最好使用
var error = @Html.Raw(Json.Encode(TempData["Error"]))
if (error) {
alert("Problem" + '\n' + error);
} else {
alert("The file Uploaded Successfully");
}
根据修改后的问题上下文,您可以在ajax调用中使用它。Razor代码在发送到视图之前会在服务器上进行解析,因此
@TempData[“Error”]
会在首次呈现页面时返回值。仅仅因为您可能正在Upload()
方法中设置TempData
的值,所以不会对其进行更新
您的方法应该返回包含错误的json,这样您就可以在成功回调中显示它。例如,您的方法可能是
public ActionResult Upload(...)
{
return Json(null); // to indicate success, or
return Json("oops, something went wrong);
}
然后在ajax回调中
success: function (response) {
if (response) {
alert(response);
} else {
alert("The file Uploaded Successfully");
}
这是在一个单独的js文件中吗?
@TempData[“Error”]
不应该被引用。不,它在HTML页面中。事实上,上面的代码是JQuery ajax请求的一部分,我将更新帖子。请根据您的编辑和ajax调用中的事实参考更新的答案。它可以工作,但当请求以返回json(null)成功结束时。。它返回“Fail”。它转到错误:function(){alert(“Fail”);},除非抛出异常,否则不应发生此错误(尽管使用$.getJSON()
方法时会发生此错误)。您总是可以执行类似于返回Json(true)的操作
表示成功,并返回Json(新的{Error=“your Error message”})然后在脚本中-if(response.Error){alert(response.Error);}else{…}
并且您是否碰巧添加了dataType:'json',
(这也会导致错误-如果是这样,就删除它)我添加了dataType:'json',然后删除它。。同样的问题也发生了。幸运的是,我找到了很好的解决办法。非常感谢你的帮助。