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