[英]MVC 3 Razor View: Generating JavaScript from a boolean model value
[英]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>
由于某些原因,使用剃刀语法返回属性时,条件将被忽略。 如果使用if
和else
语句, if
发生相同的情况。
编辑:
如果使用@Model.Year.HasValue.ToString().ToLower()
检查空值,也会引发该异常。
您可以在可为空的int变量上使用HasValue
属性来确定它是否具有值,如果是,则读取该值,否则设置所需的默认值。 您可以在一个c#语句中执行此操作,因此您无需担心C#和javascript之间的True
和true
不一致。
这应该工作正常。
<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.