繁体   English   中英

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

[英]Check if view model property has value in Javascript using MVC Razor syntax

如果属性可以像int?一样为空,如何从Javascript视图模型中获取值int? bool? 等等
我很容易地设法检查property是否具有值,直到返回值之前它都起作用。

<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>

由于某些原因,使用剃刀语法返回属性时,条件将被忽略。 如果使用ifelse语句, if发生相同的情况。

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

您可以在可为空的int变量上使用HasValue属性来确定它是否具有值,如果是,则读取该值,否则设置所需的默认值。 您可以在一个c#语句中执行此操作,因此您无需担心C#和javascript之间的Truetrue不一致。

这应该工作正常。

<script>

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

</script>

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

使用@Model.Year.HasValue检查是否为空。

var year2 = @Model.Year.HasValue ? @Model.Year.Value : 0;

您可以简单地使用:

var year = @(@Model.Year??0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM