Как использовать общий синтаксис внутри файла представления Razor? - PullRequest
69 голосов
/ 23 ноября 2010

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

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

Однако Razor задыхается от <перед ISQL. </p>

Есть ли официальное решение?

Ответы [ 5 ]

96 голосов
/ 23 ноября 2010

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

@(Html.Test<ISQL>().Nand())
14 голосов
/ 27 марта 2013

Я только что нашел этот вопрос, когда искал эту "ту же ошибку" при обновлении 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;    
}

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

6 голосов
/ 15 марта 2012

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

4 голосов
/ 03 февраля 2017

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

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

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

Для использования универсального типа «Список» требуются аргументы одного типа

Решение : Я поместил строку присваивания в секунду @{ ... } Бок .

@{
    // ... other assignments
}
@{
    List<string> stringList = new List<string>()  // WORKS
}
2 голосов
/ 06 мая 2015

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

@{
    string @class = ViewBag.@class;
    IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}

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

@{  string @class = ViewBag.@class; }
@{  IDictionary<string, object> attrs = new Dictionary<string, object>(); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...