Почему мой вид бритвы MVC не хочет создавать экземпляр ResourceManager - PullRequest
2 голосов
/ 07 декабря 2011

Я пишу этот код в представлении MVC 3:

<table>
    <tr>
        <th>@SecondIndexStrings.Activity_ActivityName</th>
        <th>@SecondIndexStrings.Activity_DateStarted</th>
        <th>@SecondIndexStrings.Activity_ProficiencyLevel</th>
    </tr>
    @foreach (var activity in Model.Activities)
    {
        <tr>
            <td>@activity.ActivityName</td>
            <td>@activity.DateStarted.ToShortDateString()</td>
            <td>@new ResourceManager(typeof(IndexStrings)).GetString(activity.ProficiencyLevel.ToString())</td>
        </tr>
    }
</table>

По какой-то причине строка с "@new ResourceManager ..." не распознается как действительная и выдает ошибку компиляциивсякий раз, когда я запускаю его.

Если я только напишу @ResourceManager, то текст станет синим, указывая, что он распознается как допустимый класс, то же самое для ресурса IndexStrings, но в целом кажется, что он не знаетчто это должны быть классы.

Что я делаю не так?

Спасибо.

1 Ответ

5 голосов
/ 07 декабря 2011

Из-за пробелов вы должны использовать круглые скобки, чтобы помочь увидеть, где начинается / заканчивается ваше выражение:

@(new ResourceManager(typeof(IndexStrings)).GetString(activity.ProficiencyLevel.ToString()))

Возможно, вы захотите добавить вспомогательный метод, возможно, в качестве расширения-метод на HtmlHelper, так что вы можете использовать что-то вроде:

@Html.Resource<IndexStrings>(activity.ProficiencyLevel)

или подобное, что может выглядеть примерно так:

public static string Resource<T>(this HtmlHelper html, object key) {
    return new ResourceManager(typeof(T)).GetString(key.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...