使用 MVC Razor 语法检查视图模型属性在 Javascript 中是否具有值

Mr.*_*ond 1 javascript c# asp.net-mvc razor

我如何从视图模型值在Javascript如果属性为空一样int?bool?
我易于管理的检查,如果酒店有一个价值,它的作品,直到我回到它的价值。

<script type="text/javascript">

    // Works as expected
    var year = !!'@Model.Year' ? 1994 : 0;

    // Null reference exceptin thrown
    var year2 = !!'@Model.Year' ? @Model.Year.Value : 0;

</script>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,使用 razor 语法返回属性时会忽略该条件。如果使用ifelse语句也会发生同样的情况。

编辑:
如果@Model.Year.HasValue.ToString().ToLower()用于检查空值,也会引发异常。

Shy*_*yju 5

您可以使用HasValue可空 int 变量上的属性来确定它是否具有值,如果是,则读取该值,否则设置您想要的默认值。这样你就不用操心,你可以在一个C#语句做到这一点Truetrue不一致C#和JavaScript之间。

这应该可以正常工作。

<script>

    var year = @(Model.Year.HasValue ? Model.Year.Value : 0);
    alert(year);

</script>
Run Code Online (Sandbox Code Playgroud)

在这里,我们将整个表达式包装为单个 C# 语句,方法是将其包装在@(和 中)。因此,当加载此页面时,razor 将运行 C# 语句并将结果值设置为您的 javascript 变量。