Почему сильно типизированные Html-помощники помогают мне? - PullRequest
2 голосов
/ 12 января 2010

Я прочитал объяснение ScottGu на Сильно типизированные HTML-помощники , и я понимаю, что это дает мне возможность лучше проверять время компиляции просмотров. У меня сложилось впечатление, что у меня уже было это, когда я использовал model.PropertyName в помощнике MVC1 Html.TextBox, но, видимо, это не так. Итак, как использование лямбда-выражения делает это лучше для меня?

Ответы [ 3 ]

13 голосов
/ 12 января 2010

Рассмотрим синтаксис существующих вспомогательных методов HTML:

<%= Html.TextBox("Quantity", Model.Quantity) %>

Если вы переименуете свойство Quantity объекта в «CurrentQuantity», сгенерированный элемент <input> все равно будет иметь значение name="Quantity", и привязка модели прекратится, если вы не забудете изменить этот первый параметр.

При использовании лямбда-выражения для указания имени элемента неверное или неправильно написанное имя свойства становится ошибкой компиляции.

<!-- No magic strings here! -->
<%= Html.TextBoxFor(model => model.CurrentQuantity) %>
2 голосов
/ 12 января 2010

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

<%= Html.TextBox( "Name" ) %>

против

<%= Html.TextBox( m => m.Name ) %>
0 голосов
/ 04 августа 2017

Текстовое поле не выдает ошибку времени компиляции, если вы неправильно указали имя свойства. это вызовет исключение времени выполнения. TextBoxFor - это генетический метод, поэтому он даст ошибку времени компиляции, если вы неправильно упомянули имя свойства. TextBoxFor будет полезен, когда мы добавим два имени свойства в представление

@Html.TextBox( "Name" ,"value",new { @class="class"}) 

против

@Html.TextBoxFor( m => m.Name, new { @id="txtValue"}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...