Сильно типизированная или слабо типизированная привязка в коде переднего конца? - PullRequest
1 голос
/ 23 февраля 2010

Так что мой вопрос больше касается того, что люди считают лучшей практикой и почему:

Я сбрасывал литералы на страницы и повторители и некоторое время связывал их в коде. Это считается плохой практикой? а именно:

Страница ASPX:

<asp: Literal id="litTextToInsert" runat="Server" />

Код сзади:

litTextToInsert.Text = objData.MyText;

ИЛИ (ретранслятор):

protected void rpt_ItemDataBoundVersion(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        RepeaterItem objItem = e.Item;
        Data.MyObject objDataItem = (Data.MyObject) objItem.DataItem;
        Literal litMyText= (Literal)objItem.FindControl("litTextToInsert");
        litMyText = objDataItem.MyText;               
    }
}

С большинством демонстраций о MVC и общих веб-формах я вижу, что многие люди просто сбрасывают связующий код в интерфейс

е:

Страница ASPX:

<%#Eval("MyText") %>

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

В случае строго типизированной версии, если что-то изменится в вашем DAL и т. Д., Сборка будет нарушена - дайте мне знать, что я все испортил.

Почему так много людей , кажется, используют слабо типизированный код в ASP.Net (в примерах, MVC и т. Д.)? Я что-то пропустил? Я идиот и упускаю суть? Это только потому, что его демонстрационный код пытается быть проще?

Дайте мне знать.

Ответы [ 2 ]

1 голос
/ 23 февраля 2010

На «обычных» страницах aspx привязка не относится к типу save, и вы не получите ошибок времени компиляции, как сказал Одед. Тем не менее, в MVC это еще одна чашка, здесь вы получаете предупреждения времени компиляции, а также ошибки и даже intellisense.

На «обычных» страницах aspx события обрабатываются в коде за страницей, который должен быть интегрирован со страницей aspx. В MVC события обрабатываются контроллером, и представление можно рассматривать как «просто шаблон», как в классическом ASP. Однако большим преимуществом по сравнению с классическим ASP является расширенная поддержка дизайна и времени компиляции.

1 голос
/ 23 февраля 2010

Вы правы, говоря, что использование выражений связывания на странице .aspx означает, что вы не будете получать предупреждения времени компиляции за неправильный синтаксис / использование. Вы можете увидеть это как слабость или сила.

Связывающие выражения на странице .aspx:

  • Позволяет вам изменить ваш .aspx без перекомпиляции и повторного развертывания.
  • Вы можете добавлять / изменять выражения привязки на лету
  • Уменьшить код за беспорядком
  • слабо набраны
  • Хранить логику отображения там, где она принадлежит

Аналогичным образом, ожидая кода:

  • Обеспечивает целостность вашей кодовой базы (страницы ASPX не расходятся)
  • Сильно набранный
  • Статический анализ кода будет работать лучше

Я уверен, что другие придумают много других примеров за и против любого варианта.

На мой взгляд - вы должны использовать то, что вам удобно. Некоторые люди используют выражения привязки исключительно на своих страницах .aspx с большим графом объектов, и это прекрасно работает для них. Другие позаботятся о том, чтобы они делали это только в коде файла, и это прекрасно им подходит.

...