2010-07-14 3 views
2

Я только начинаю делать веб-страницы в ASP, и весь код просто чувствует ... грязный.Что такое правильный стиль ASP.NET?

<% if (new Random().NextDouble() < 0.5) { %> 
    <asp:Image ID="image" runat="server" ImageUrl="~/1.jpg" /> 
<% } else { %> 
    <asp:Image ID="image" runat="server" ImageUrl="~/2.jpg" /> 
<% } %> 

В настоящее время, у меня есть очень простая страница, которая свет на содержание, но в конце концов я буду иметь, чтобы добавить логику и более элементы отображения этого. Поэтому я прихожу к вам, ТАК.

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

Edit: В asp:Image теги были сгенерированы из VS2008, а затем я добавил if блоки, основанные на то, что я нашел в Интернете. У меня много опыта работы с C#, но абсолютно нет с ASP, поэтому, если в этом коде есть более тонкости, которые я не понимаю, во что бы то ни стало просвещать!

+0

Это классический ASP, а не ASP.Net. В ASP.Net вам нужно только одно изображение, и вы можете переключать его ImageUrl в Codebehind или иметь два изображения и переключать их видимость. Посмотрите: http://www.beansoftware.com/ASP.NET-Tutorials/Classic-ASP-vs-ASP.NET.aspx –

+0

@ Поверните, хотя вы правы, вы только частично правы. как бы вы переключали изображения в приложении ASP.NET MVC? Для разработчика полезно знать оба метода. –

+3

hmm, я никогда не видел теги runat = "server" в классическом asp, я думаю, что это действительно asp.net какого-то вкуса. –

ответ

8

В разметке:

<asp:Image ID="image" runat="server" />

В отделенном коде:

... 
if (new Random().NextDouble() < 0.5) 
{ 
    image.ImageUrl = "~/1.jpg"; 
} 
else 
{ 
    image.ImageUrl = "~/2.jpg"; 
} 
+0

Так я тоже делаю свои WebForms, но как только я переехал в MVC, я быстро понял, что избежать кода в разметке на самом деле невозможно. Хорошо знать оба варианта. –

+0

Определенно важно знать оба варианта, но одной из основных целей ASP.Net было вывести код из разметки, как это требовалось с ASP. Речь идет о стиле в ASP.Net. – arootbeer

+0

правильно, но OP не указывает ASP.NET WebForms или ASP.NET MVC (оба являются ASP.NET). Хотя он ускользает от WebForms с объявлением 'runat =" server ". –

0

ASP.NET WebForms является немного грязным. Это был один из его недостатков, наряду с ViewState и довольно запутанной моделью событий. Если вы хотите использовать более чистую платформу для разработки веб-сайтов, я рекомендую ASP.NET MVC.

+0

хотя MVC - это колени пчел, на самом деле это не ответ на вопрос. –

+0

@rock: Это не был ответ на некоторые части вопроса, однако это было для других частей. Он заявил, что ASP.NET WebForms чувствует себя грязным, и MVC по сути является ответом на это. – jrista

+0

Я полагаю, это правда. (fyi, я не сделал нисходящего) –

2

Что касается встроенного оператора if. Это позволяет манипулировать ImageUrl в 1 строке вместо 5

<asp:Image ID="image" runat="server" ImageUrl='<%= (new Random().NextDouble() < 0.5) ? "~/1.jpg" : "~/2.jpg" %>' /> 

Что касается вашего второго вопроса .. Там очень много для .NET, и вы должны знать, приличный кусок его идти вперед. Посмотрите на некоторые шаблоны проектирования (MVC это мой любимый)

0

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

+0

Что произойдет, если он перейдет в MVC? –

+1

Затем контроллер должен решить, какое изображение будет отображаться, а представление должно быть чем-то вроде

+0

Я бы тоже не делал этого в контроллере. Если бы я переключался с заднего конца, сделайте это в ViewModel. –

3

В вашем конкретном случае,

<asp:Image ID="image" runat="server" 
      ImageUrl='~/<%= new Random().Next(1,3) %>.jpg' /> 

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

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