2010-07-14 6 views
2

Je commence tout juste à faire des pages web en ASP et tout le code se sent ... malpropre.Quel est le style ASP.NET approprié?

<% 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" /> 
<% } %> 

Actuellement, j'ai une page très basique qui est léger sur le contenu, mais finalement je vais devoir ajouter des éléments logiques et d'affichage plus à ce sujet. Alors je viens à vous, SO.

D'abord, comment pourrais-je nettoyer ce petit segment de code? Deuxièmement, que dois-je savoir à l'avenir?

Edit: Les asp:Image balises ont été générées à partir VS2008, puis-je ajouter les if blocs à base de ce que je trouve en ligne. J'ai beaucoup d'expérience avec C#, mais absolument aucun avec ASP, donc s'il y a plus de subtilités à propos de ce code que je ne comprends pas, éclaircissez tout!

+0

Ceci est ASP classique et non ASP.Net. Dans ASP.Net vous avez seulement besoin d'une Image et vous pouvez changer ImageUrl dans Codebehind ou avoir deux images et changer de visibilités. Avez al regarder: http://www.beansoftware.com/ASP.NET-Tutorials/Classic-ASP-vs-ASP.NET.aspx –

+0

@Tim, bien que votre droit, vous avez seulement partiellement raison. comment changeriez-vous les images dans une application ASP.NET MVC? Il est bon pour un développeur de connaître les deux méthodes. –

+3

hmm, je n'ai jamais vu runat = "serveur" tags en ASP classique, je suppose que c'est vraiment asp.net de quelque saveur. –

Répondre

8

Dans le balisage:

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

Dans le code-behind:

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

C'est aussi ce que font mes WebForms, mais une fois que j'ai migré vers MVC, j'ai appris très vite qu'il est vraiment impossible d'éviter le code dans le balisage. C'est bon de connaître les deux options. –

+0

Il est certainement important de connaître les deux options, mais l'un des principaux objectifs de ASP.Net était de sortir le code du balisage comme cela avait été le cas avec ASP. La question concerne spécifiquement le style dans ASP.Net. – arootbeer

+0

à droite, mais l'OP ne spécifie pas ASP.NET WebForms ou ASP.NET MVC (les deux sont ASP.NET). Bien qu'il échappe à WebForms avec la déclaration 'runat =" server "'. –

0

ASP.NET WebForms est un peu brouillon. C'était l'un de ses inconvénients, avec ViewState et le modèle événementiel plutôt compliqué. Si vous souhaitez utiliser une plate-forme plus propre pour développer des sites Web, je recommande ASP.NET MVC. Qu'en est-il d'une instruction inline if?

+0

bien que MVC soit les genoux des abeilles, ce n'est pas vraiment une réponse à la question. –

+0

@rock: Ce n'était pas une réponse à certaines parties de la question, mais c'était à d'autres parties. Il a déclaré que ASP.NET WebForms est désordonné, et MVC est essentiellement la réponse à cette question. – jrista

+0

Je suppose que c'est vrai. (Fyi, je n'ai pas downvote) –

2

Cela vous permet de manipuler la imageUrl en 1 ligne au lieu de 5

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

Quant à votre deuxième question .. Il y a beaucoup à .NET et vous avez besoin de connaître un morceau digne de celui-ci à l'avenir. Regardez dans certains modèles de conception (MVC est mon préféré)

0

Mieux encore, essayez d'avoir le moins de code possible dans le balisage de la page et définissez le ImageUrl de l'image dans l'événement de chargement de la page ou une autre méthode.

+0

que se passe-t-il s'il passe à MVC? –

+1

Ensuite, le contrôleur devrait décider quelle image afficher et la vue devrait être quelque chose comme  foo

+0

Je ne le ferais pas non plus dans le contrôleur. faites-le dans un ViewModel. –

3

Dans votre cas,

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

Mais en général, le choix de faire des choses dans le code derrière ou dans le balisage est un choix que vous devez faire. Vous pouvez aimer Razor, une nouvelle façon de faire dans le code de balisage. Je ne l'ai pas encore essayé, mais ça a l'air un peu plus propre.

Questions connexes