#javascript #asp.net-mvc
#javascript #asp.net-mvc
Вопрос:
Мне любопытно, как обработать установку информации о модели с возможностью обнуления на странице aspx в переменную JavaScript. Я использую MVC3 RC, и я уверен, что это тривиально, и я чего-то не хватает.
Учитывая этот код (опять же, в моем представлении aspx):
var myFloat = <%: Model.MyNullableFloat %>;
если SelectedAudience равно нулю, на страницу записывается следующее:
var myFloat = ;
То, что я хочу записать, это:
var myFloat = null;
В настоящее время у меня есть какая-то уродливая логика:
var myFloat = null;
<%
if(Model.MyNullableFloat != null) {
%>
myFloat = <%: Model.AdGroup.MyNullableFloat %>;
<%
}
%>
Есть мысли о более чистом способе?
Спасибо
Ответ №1:
Вы можете использовать условный оператор
var myFloat = <%: Model.MyNullableFloat.HasValue
? Model.MyNullableFloat.Value.ToString()
: "null"%>;
Помните, что оба условия должны возвращать один и тот же тип, поэтому вам придется ToString()
указать результат, если вы хотите вернуть "null"
.
Ответ №2:
Используйте тернарный оператор для быстрого решения:
var myFloat = <%: Model.MyNullableFloat.HasValue ? Model.MyNullableFloat.Value : "null" %>;
Комментарии:
1. вам нужно
ToString()
указать значение, иначе это вызовет исключение
Ответ №3:
Это не намного лучше ..!
<%= Model.MyNullableFloat.HasValue? Model.MyNullableFloat.ToString() : "null"%>;
или вы могли бы попробовать метод расширения
public static string ToStringVerboseNull(this float? myFloat)
{
return myFloat.HasValue ? myFloat.ToString() : "null";
}
и затем
<%= myFloat.ToStringVerboseNull()%>
Ответ №4:
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 %>
Комментарии:
1. разве вам не нужно
ToString()
использовать значение с нулевым значением float?