[英]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.