етикет или @html.Label ASP.net MVC 4

Новак в ASP.net MVC 4 и се опитва да разбере смисъла на Razor. Ако исках просто да покажа малко текст в моята .cshtml страница, мога ли да използвам

<label class="LabelCSSTop">Introduction</label>

или трябва да използвам:

 @Html.Label("STW", htmlAttributes: new { @class = "LabelCSSTop" })

Не съм сигурен дали едното е за предпочитане пред другото или дали едното е добре. Ако последният така или иначе излъчва етикета на етикета, трябва ли да се придържам към първия?

Отново, ако просто исках да покажа текстово поле, мога ли просто да направя това:

<input id="txtName" type="text" />

или трябва да направя това:

@Html.TextBox("txtName", "")

Има ли ситуация, когато трябва да използвам @Html над обикновения html таг?

Благодаря предварително!!


person alpha    schedule 25.04.2013    source източник


Отговори (6)


В случая с фрагмента на етикета ви няма особено значение. Бих предпочел по-простия синтаксис (обикновен HTML).

Повечето помощни методи също не ви позволяват да обграждате друг елемент. Това може да бъде съображение, когато избирате да използвате/не използвате такъв.

Строго типизирани еквиваленти

Все пак си струва да се отбележи, че това, което използвате @Html.[Element]For<T>() методите, вие получавате важни функции. Обърнете внимание на "За" в края на името на метода.

Пример:

@Html.TextBoxFor( o => o.FirstName )

Това ще обработва създаването на ID/Име въз основа на йерархията на обекта (което е критично за обвързването на модела). Той също така ще добави ненатрапчиви атрибути за валидиране. Тези методи приемат израз като аргумент, който препраща към свойство в модела. Метаданните на това свойство се получават от MVC рамката и като такова то "знае" повече за свойството, отколкото неговият аналог на низов аргумент.

Той също така ви позволява да работите с UI код по строго типизиран начин. Visual Studio ще подчертае синтактичните грешки, докато не може да го направи с низ. Изгледите също могат да бъдат компилирани по желание заедно с решението, което позволява допълнителни проверки по време на компилиране.

Други съображения

Понякога HTML помощен метод ще изпълнява и допълнителни задачи, които са полезни, като Html.Checkbox и Html.CheckboxFor, които също създават скрито поле, което върви заедно с квадратчето за отметка. Друг пример са свързаните с URL методи (като за хипервръзка), които са съобразени с маршрута.

<!-- bad -->
<a href="/bg/foo/bar/123">my link</a>

<!-- good -->
@Html.ActionLink( "my link", "foo", "bar", new{ id=123 } )

<!-- also fine (perhaps you want to wrap something with the anchor) -->
<a href="/[email protected]( "foo", "bar", new{ id=123 } )"><span>my link</span></a>

Има леко предимство в производителността при използването на обикновен HTML в сравнение с код, който трябва да се изпълнява всеки път, когато изгледът се визуализира, въпреки че това не трябва да бъде решаващият фактор.

person Tim Medora    schedule 25.04.2013

Зависи какво правиш.

Ако имате SPA (Single-Page Application), можете да използвате:

<input id="txtName" type="text" />

В противен случай се препоръчва използването на Html помощници, за да обвържете вашите контроли с вашия модел.

person Ahmed El Kilani    schedule 25.04.2013
comment
Не е необходимо да използвате Html помощниците, за да накарате вашите елементи на формуляр да се обвържат с вашия модел. Ако наименувате вашите елементи на формуляра така, както са наименувани в модела с генериране на ръчно въвеждане на формуляр, свързващият модел все още ще се свързва с тях - person Tommy; 25.04.2013
comment
Не съм казал "трябва". Казах препоръчително. Имате множество помощници, които да ви помогнат да контролирате вашите елементи, съобщения за локализация и валидиране. - person Ahmed El Kilani; 25.04.2013
comment
Съжаляваме, че изявлението ви се чете така, сякаш е препоръчително да използвате помощниците, защото кара контролите ви да се свързват с вашия модел. Моя грешка - person Tommy; 25.04.2013

Ако искате просто да покажете малко текст във вашата .cshtml страница, не препоръчвам @Html.Label и също така да не използвате html етикета. Елементът представлява надпис в потребителски интерфейс. и ще го видите в в случай на @Html.Label се добавя атрибут for, отнасящ се до идентификатора на елемент, който вероятно не съществува. Стойността на този атрибут е стойността на полето на модела, в което небуквено-цифровите знаци се заменят с долна черта. Трябва да използвате @Html.Display или @Html.DisplayFor, евентуално обвити в някои обикновени html елементи line span или p.

person R. Schreurs    schedule 05.09.2013

Помощниците са там главно, за да ви помогнат да показвате етикети, въвеждане на формуляри и т.н. за строго типизираните свойства на вашия модел. С помощта на помощниците и Visual Studio Intellisense можете значително да намалите броя на правописните грешки, които можете да направите, когато генерирате уеб страница.

С това казано, можете да продължите да създавате вашите елементи ръчно за двете свойства на вашия модел на изглед или елементи, които искате да покажете, които не са част от вашия модел на изглед.

person Tommy    schedule 25.04.2013

Що се отнася до етикетите, бих казал, че зависи от вас какво предпочитате. Някои примери, когато може да бъде полезно с HTML помощни тагове, са например

  • Когато работите с хипервръзки, тъй като HTML помощникът опростява маршрутизирането
  • Когато се свържете с вашия модел, като използвате @Html.LabelFor, @Html.TextBoxFor и т.н
  • Когато използвате @Html.EditorFor, тъй като можете да зададете конкретно поведение и външен вид в изглед на редактор
person The Jonas Persson    schedule 25.04.2013

@html.label и @html.textbox се използват, когато искате да го свържете към вашия модел по лесен начин...което не може да се постигне чрез въвеждане и т.н. в един ред

person Shafqat Masood    schedule 25.04.2013