ASP.NET MVC客户端模型和JavaScript

问题描述:

我很好奇如何处理将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 %>; 
    <% 
     } 
    %> 

任何想法更清洁的方式?

感谢

您可以使用conditional operator

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

请记住,这两个条件都需要返回相同的类型,因此如果要返回"null",则必须结果为ToString()

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

一个快速的解决方案使用三元操作符:

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

这不是好多了..!

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

或者你可以尝试扩展方法

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

然后

<%= myFloat.ToStringVerboseNull()%>