2013-03-08 2 views
1

Для приложения ASP.NET, MVC при использовании grid с синтаксисом Razor, зачем мне нужен @ прямо перед линией grid.GetHtml();?ASP.NET MVC, @ перед grid.GetHtml();

Пример -

@{ 
    var grid = new WebGrid(Model); 

    @grid.GetHtml(); 

} 

не должны окружающих grid.GetHtml(); с @{ } быть достаточно?

Спасибо!

ответ

0

Использование @, как печать/писать что-то на этой странице.

grid.GetHtml() 

будет генерировать требуемую строку, но эта функция не имеет никакого представления о печати сгенерированного html. чтобы сделать это, вы должны написать это

@grid.GetHtml() 

Есть некоторые помощники, где вы не обязаны ставить @ перед оператором.

, например

Html.RenderPartial() 

Поскольку MVC записывает сгенерированный HTML в поток ответа. Поэтому здесь это утверждение должно получить включены в

@ { }

блок в некоторых случаях он возвращает HTML, и мы, как ожидается, вызвать печать для его использования «@»

+0

Удивительный ответ KD! –

1

С помощью @ {} вы указываете, что должен выполняться некоторый фрагмент кода, например объявление переменной «сетка».

Теперь для второй строки, без @, вы остаетесь только с инструкцией, которая равна строке, которая даже не поддерживается синтаксически.

При использовании @, что линия переводится как что-то вроде:

Response.Write(grid.GetHtml()); 
0

Хотя то, что вы сделали, полностью поддерживается в двигателе зрения Razor и иногда не может быть сделано по-другому. Лучше быть более конкретным:

@{ 
    var grid = new WebGrid(Model); 
} 

@grid.GetHtml(); 

Итак, чтобы четко отделить код от вывода. Я думаю, что это имеет смысл для лучшей читаемости кода/просмотра.

Смежные вопросы