Html.DisplayFor (modelItem => item.Status) - передает его в оператор switch - PullRequest
1 голос
/ 13 июля 2011

Я довольно новичок в MVC, но у меня есть следующий код:

    <td>
        @Html.DisplayFor(modelItem => item.Status)
        @switch (item.Status)
        {
            case 0: Html.DisplayText("Requested");
                break;
            case 1: Html.DisplayText("In Progress");
                break;
            case 2: Html.DisplayText("Declined");
                break;
            default:
                Html.DisplayText("Undefined");
                break;
        }
    </td>

Он хорошо отображает "Html.DisplayFor", это целое число.Но на самом деле я хочу отобразить эквивалентный текст на основе item.Status в той же позиции.Но это не работает.Я мог бы изменить способ, которым исходный класс обрабатывает состояние в методах Get и Set, но как бы я сделал это таким образом?

Ответы [ 3 ]

4 голосов
/ 13 июля 2011

Вы можете создать свойство в ViewModel, которое выполняет эту логику за вас. Такие как

public string StatusDescription { 
    get { 
        switch (this.Status) {
            case 0: 
                return "Requested";
            case 1:
                return "In Progress";
            // yada yada yada
        }
    }
}

И, на ваш взгляд, заменить оператор switch на

Html.DisplayFor(modelItem => item.StatusDescription);
2 голосов
/ 13 июля 2011

Я бы создал декларативный вспомогательный метод (http://weblogs.asp.net/mikaelsoderstrom/archive/2010/10/06/declarative-helpers-in-razor.aspx), который отображает текст в зависимости от состояния. После этого вы можете назвать это так:

@Html.MyHelper(status)

Или даже лучше, как сказал комментатор в исходном сообщении, вы можете создать свойство в вашей ViewModel, которое делает это.

0 голосов
/ 13 июля 2011

Я бы выставил это как свойство StatusText в модели.

Такая логика действительно должна быть отделена от вашего пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...