2010-12-21 158 views
1

我很好奇如何處理將aspx頁面上的可空模型信息設置爲JavaScript變量。我正在使用MVC3 RC,我相信這是微不足道的,我錯過了一些東西。ASP.NET MVC客戶端模型和JavaScript

鑑於此代碼(同樣,在我的aspx視圖):

var myFloat = <%: Model.MyNullableFloat %>; 

如果SELECTEDAUDIENCE是空的,能寫的頁面:

var myFloat = ; 

我希望得到書面的:

var myFloat = null; 

目前,我有一些醜陋的邏輯:

var myFloat = null; 
    <% 
     if(Model.MyNullableFloat != null) { 
    %> 
      myFloat = <%: Model.AdGroup.MyNullableFloat %>; 
    <% 
     } 
    %> 

任何想法更清潔的方式?

感謝

回答

3

您可以使用conditional operator

var myFloat = <%: Model.MyNullableFloat.HasValue 
    ? Model.MyNullableFloat.Value.ToString() 
    : "null"%>; 

請記住,這兩個條件都需要返回相同的類型,因此如果要返回"null",則必須結果爲ToString()

1
var myFloat = <%= Model.MyNullableFloat != null ? Model.MyNullableFloat.ToString() : "null" %>; 

你也可以在你的控制器處理這個

Public Class MyModel { 
    public string MyNullableFloatAsString { get; set; } 
} 

Public ActionResult Something() { 
    MyModel MyControllerModel; 

    MyControllerModel.MyNullableFloatAsString = Model.MyNullableFloat != null ? Model.MyNullableFloat.ToString() + ";" : "null;" 

    //Return Model to view 
} 

現在,在您的視圖中,您可以簡單地這樣做

var myFloat = <%= Model.MyNullableFloatAsString %> 
+0

不就得'的ToString()`可空浮? – hunter 2010-12-21 17:26:10

+0

@hunter ...是的,這將是最好的趕上 – 2010-12-21 17:30:53

1

一個快速的解決方案使用三元操作符:

var myFloat = <%: Model.MyNullableFloat.HasValue ? Model.MyNullableFloat.Value : "null" %>; 
1

這不是好多了..!

<%= Model.MyNullableFloat.HasValue? Model.MyNullableFloat.ToString() : "null"%>; 

或者你可以嘗試擴展方法

public static string ToStringVerboseNull(this float? myFloat) 
{ 
    return myFloat.HasValue ? myFloat.ToString() : "null"; 
} 

然後

<%= myFloat.ToStringVerboseNull()%>