2010-03-10 4 views
1

Cela semble être facile, mais je n'arrive pas à le comprendre. Toutes mes recherches sur google m'amènent à créer des liens vers des bases de données, ce qui n'est pas ce que je veux faire. Je suis un développeur web complet.Créer un lien sur la page w/adresse Web stockée dans la base de données

J'ai suivi à peu près le tutoriel NerdDinner dans la création de mon application web. L'un de mes champs stockés est une adresse Web. Sur les pages Index et Détails, lorsque j'affiche les informations de mon enregistrement, je souhaite que l'adresse Web soit un lien cliquable vers le site Web.

Il est actuellement affiché comme:

<%= Html.Encode(Model.Subcontract.company1.website) %> 

Répondre

1

Essayez ceci:

<a href="<%= Html.Encode(Model.Subcontract.company1.website) %>"><%= Html.Encode(Model.Subcontract.company1.website) %></a> 

ou

<a href="<%= Html.Encode(Model.Subcontract.company1.website) %>">Company website</a> 

Si vous utilisez DataAnnotations, vous pouvez lire sur DataTypeAttribute. Si vous décorez une propriété avec cette propriété avec le type de données EmailAddress et que vous utilisez l'aide DisplayFor, vous obtiendrez un effet similaire.

+0

Merci. Je ne savais pas que vous pouviez intégrer le Html.Encode dans le href. J'ai quelques adresses e-mail que je vais probablement vouloir faire à une date ultérieure, alors maintenant je sais ce qu'il faut lire. – RememberME

+0

Lorsque je clique sur le lien, cela m'amène à http: //mysite/Subcontracts/Details/www.stackoverflow.com plutôt qu'à www.stackoverflow.com Comment, dis-je que ce n'est pas un lien interne? '<%= Html.Encode(item.company1.website) %>' – RememberME

+1

@RememberME: 'http: // www.stackoverflow.com' Ajoutez' http: // 'au début. – LukLed

0

Vous souhaitez simplement rendre les informations renvoyées par Model.Subcontract.company1.website cliquables? Si oui, vous pouvez simplement écrire cette information dans une balise d'ancrage comme ceci:

<a href="<%= Html.Encode(Model.Subcontract.company1.website) %>"><%= Html.Encode(Model.Subcontract.company1.website) %></a> 

Sinon, vous pouvez le faire sur l'événement PageLoad en utilisant un

<asp:HyperLink ID="mylink" runat="server" /> 

et en plaçant les éléments suivants en cas PageLoad de le code derrière:

mylink.NavigateUrl = Model.Subcontract.company1.website 
mylink.Text = Model.Subcontract.company1.website 
+1

C'est MVC, nous n'avons pas d'événement PageLoad ici. – LukLed

0

Vous pouvez créer deux méthodes d'extension pour la classe d'aide HTML qui génère un lien:

public static MvcHtmlString HtmlLink(this HtmlHelper html, string url, string text) 
{ 
    return HtmlLink(html, url, text, null); 
} 

public static MvcHtmlString HtmlLink(this HtmlHelper html, string url, string text, object htmlAttributes) 
{ 
    TagBuilder tb = new TagBuilder("a"); 
    tb.InnerHtml = text; 
    tb.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 
    tb.MergeAttribute("href", url); 
    return MvcHtmlString.Create(tb.ToString(TagRenderMode.Normal)); 
} 

Ensuite, vous pouvez simplement faire ceci:

<%= Html.HtmlLink(Model.Subcontract.company1.website, Model.Subcontract.company1.website) %> 
Questions connexes