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 %>
答
一个快速的解决方案使用三元操作符:
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()%>
不就得'的ToString()`可空浮? – hunter 2010-12-21 17:26:10
@hunter ...是的,这将是最好的赶上 – 2010-12-21 17:30:53