Как использовать общий синтаксис внутри файла просмотра Razor?

Я пытался использовать следующее утверждение:

@Html.Test<ISQL>().Nand()

Однако, Бритва задыхается от < перед ISQL.

Любая официальная работа для этого?

Ответ 1

Чтобы использовать общие методы, вам нужно избежать выражения

@(Html.Test<ISQL>().Nand())

Ответ 2

Я просто нашел этот вопрос, когда искал эту "ту же ошибку" при обновлении mvc.

У меня было:

Не работает:

@{ 
   ViewBag.Title = "Something " + @Model.Title;
   var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
}

По-видимому, синтаксис стал более строгим, и поскольку вы находитесь внутри блока @{}, вы не должны добавлять @перед Model.Title в примере. Но ошибка в редакторе кода указывала на общий, и это сводило меня с ума.

Он отлично работает, если внутри кода не существует < > , но просто удаление @из Model.Title устраняет проблему.

Работает:

@{ 
   ViewBag.Title = "Something " + Model.Title;
   var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
}

Надеюсь, это поможет кому-то

Ответ 3

Я понимаю, что этот "ответ" несколько задерживается, и вопрос, очевидно, удовлетворительно (и хорошо) ответил. Тем не менее, для будущих посетителей этой страницы, если вы после более полного справочного руководства, MS введение синтаксиса Razor, а также Phil Haack очень полезно Быстрая ссылка Razor в блоге.

Ответ 4

Это о символе @, этот пример работает до обновления

@{
    string @class = [email protected];
    IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}

После обновления он должен быть разделен на два блока

@{  string @class = [email protected]; }
@{  IDictionary<string, object> attrs = new Dictionary<string, object>(); }

Ответ 5

У меня был странный случай, когда у меня было несколько заданий внутри одного @{ ... } bock.

@{
    // ... other assignments (without error)
    List<string> stringList = new List<string>()  // ERROR MESSAGE HERE
}

Что бы я ни делал, всегда были ошибки, например:

Использование обобщенного типа "Список" требует одного типа аргументов

Решение: Я поместил строку назначения в второй @{ ... } bock.

@{
    // ... other assignments
}
@{
    List<string> stringList = new List<string>()  // WORKS
}