如何通过与 jQuery 集成来检查 TempData 是否为空?

How can I check if TempData is null through integration with jQuery?

如果 TempData 不为空,我想显示一个 toastr(又名弹出窗口)。但是,我在将 jQuery 和 Razor 语法集成在一起时遇到了问题。这是我目前的 javascript:

$(document).ready(function() {
        if (@TempData["SuccessMessage"] != null) {
            toastr.options = {
                "closeButton": true,
                "positionClass": "toast-bottom-right"
            }
            toastr.success("This is a test!");
        }
});

但是,烤面包机没有显示。我已经在进一步检查 TempData 以向用户显示文本。

@if (TempData["SuccessMessage"] != null)
{
    <div class="success-message">
        @Html.Raw(@TempData["SuccessMessage"].ToString())
    </div>
}

我想知道是否有替代方法以某种方式使用上述标记并检查此 div 是否存在,如果存在,显示烤面包机?或者我可以将两张支票合二为一吗?建议?

您可以将 java 包裹在 <text></text> 中以告诉 Razor 它不是 c#,而是在 c# 块中

@if (TempData["SuccessMessage"] != null)
{
<text>
toastr.options = {
            "closeButton": true,
            "positionClass": "toast-bottom-right"
        }
        toastr.success("This is a test!");
</text>
}

您还可以将 @(TempData["SuccessMessage"] != null) 转换为 javascript bool,然后使用 javascript if 语句,就像这样...

var hasSuccessMsg = @(TempData["SuccessMessage"] != null) === 'true';
if (hasSuccessMsg) {
    //do your work here.
}

你应该这样做

if (@(TempData["SuccessMessage"] == null ? "null" : ('"' + TempData["SuccessMessage"] + '"')) != null) {

以便在 TempDate 为空的情况下生成的标记将是

if (null != null) {
@if (TempData["SuccessMessage"] != null) {
    <script>
       $(document).ready(function() {
            toastr.options = {
                "closeButton": true,
                "positionClass": "toast-bottom-right"
            }
            toastr.success("This is a test!");     
      });
   </script>
 }

我能够使用以下代码让它工作:

$(document).ready(function() {
    var success = @((TempData["SuccessMessage"] != null).ToString().ToLower());

    if (success == true) {
        toastr.options = {
            "closeButton": true,
            "positionClass": "toast-bottom-right"
        }
        toastr.success("Success!  You're now registered for Lose A Ton!");
    }
});

对于任何好奇的人,我不得不调用 ToLower() 因为 TempData 总是 return TrueFalse,而不是 truefalse.原因已解释here

Jquery 中的 TempData 值如下所示。

$(document).ready(function () {
    var tempdataval = '@TempData["Value"]';
    if (tempdataval != null && tempdataval != '') {
        alert(tempdataval);
    }
});