2015-02-02 3 views
1

У меня есть вид бритвы с данными, переданными через ViewBag (я не могу использовать ViewModel). Прошло около 50 различных свойств, каждый из которых требует своего условного предварительного форматирования (несколько больше, чем другие).Форматирование довольно большого количества свойств в поле зрения MVC

Я не могу решить, где отформатировать эти значения перед их отображением. Если форматирование происходит непосредственно в представлении, будет много оператора if-else, засоряющего представление, которое, на мой взгляд, немного беспорядочно. То, как я это делаю в данный момент, - это перейти в список предварительно отформатированных (, выполненных в контроллере) пользовательских объектов свойств, которые просматривает итерация с использованием метода @Helper.

Есть ли лучший способ сделать это?

+0

Разве вы не можете создать ViewModel и передать в ViewBag (так как вы не можете использовать ViewModel напрямую)? – Thijs

+1

Я собирался предложить то, что сделал @Thijs. Кроме того, я бы переместил логику форматирования к самой модели и выставлял свойства, которые возвращают форматированные значения вместо неформатированных, в случае, если вы все равно не будете их использовать. – Veverke

+0

@Thijs, это на самом деле хороший крик. Veverke, вы имеете в виду переместить логику форматирования в ViewModel? – Titus

ответ

0

Для полноты и репутационного блуда я добавил свое решение ниже.

Модель

public class MyModel 
{ 
    public string MyProperty 
    { 
     set; 
     get 
     { 
      return String.Format(...); 
     } 
    } 
} 

Контроллер

public class MyController 
{ 
    public ActionResult MyAction() 
    { 
     var myModel = new MyModel(); 
     // Set properties 
     ViewBag.ActualViewModel = myModel 
     return View() 
    } 
} 

Посмотреть

@{ 
    var actualModel = ViewBag.ActualModel as MyModel; 
} 
+1

Я думаю, что это подводит итог тому, какие направления вы получили :-) – Veverke

+0

@Veverke, я подниму полезный тент, который вы дали, чтобы поделиться кармой;) – Thijs

+0

SO просто превратился в настоящий бизнес ... =] – Veverke

Смежные вопросы