Установка атрибутов в ASP.Net MVC3 - PullRequest
0 голосов
/ 12 июля 2011

Я хочу установить атрибут на основе некоторого значения bool на странице просмотра, например:

            @{
                object displayMode = (Model.PostCodeEnabled) ? null : new { disabled = "disabled", style = "width:200px;" };
                @Html.TextBox("PostalCode", "", displayMode)
            }

Приведенный выше код работает нормально, но если я хочу применить ширину как 200px в обоих случаях, то следующий код не работает:

            @{
                object displayMode = (Model.PostCodeEnabled) ? new { style = "width:200px;" }: new { disabled = "disabled", style = "width:200px;" };
                @Html.TextBox("PostalCode", "", displayMode)
            }

Также меня немного смущает, когда добавлять символ @ перед атрибутом, который является разницей между new {disabled = "disabled"} и новым {@disabled = "disabled"}.

1 Ответ

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

Проблема не в знаках @ - ваша проблема в том, что вы не можете выполнить неявное преобразование типов между двумя анонимными типами.

Это означает, что вам нужно сделать «правильное» выражение if, например:

@{
    object displayMode = new { @disabled = "disabled", @style = "width:200px;" };

    if (Model.PostCodeEnabled)
    {
        displayMode = new { @style = "width:200px;" };
    }

    @Html.TextBox("PostalCode", "", displayMode)
}

Возвращаясь к знакам @ - всегда нужно включать его при создании анонимного типа для использования в качестве атрибутов HTML.

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