2012-03-30 6 views
0

Ich habe dieses wirklich seltsame Problem. Ich habe eine Htmlhelper geschrieben ...Warum ist meine MVC2-Seite HTMLEncoding ein HTML-Helfer, aber nur wenn es in einem Link-Tag ist?

public static class MaterResourceLocationHelper 
    { 
     public static HtmlString GetMasterLocation(this HtmlHelper htmlHelper) 
     { 
      return new 
       HtmlString(ConfigurationManager 
           .AppSettings["MasterResourceLocation"]); 
     } 
    } 

Als ich legte die folgenden auf einem MVC2 Ansicht ...

<%= Html.GetMasterLocation() %> 

Im Quelltext anzeigen ich ...

http://localhost/esd.myapp.com/ 

Jedoch, sobald ich versuche, es im Zusammenhang so zu verwenden ...

<link href='<%= Html.GetMasterLocation() %> 
       /Css/jquery-ui-1.8.2.custom.css' 
     rel="stylesheet" type="text/css" /> 

ich dies in der Ansicht Quelle bekommen ...

<link 
    href="../../Views/Shared/%3C%25=%20Html.GetMasterLocation()%20%25%3E%20/Css/jquery-ui-1.8.2.custom.css" 
    rel="stylesheet" type="text/css" /> 

Im wirklich verwirrt, warum das passiert?

+1

Können Sie mehr Code posten? Ich konnte Ihr Problem nicht reproduzieren. Auch, ist es nur ein Tippfehler, dass Sie einfache Anführungszeichen haben, aber dann doppelte Anführungszeichen als die Ausgabe ???? –

Antwort

0

Die ASP-View-Engine hat einige lustige Regeln, wenn diese Tags ausgewertet werden und wenn nicht. Versuchen Sie folgendes:

<link href='<%= Html.GetMasterLocation() + "/Css/jquery-ui-1.8.2.custom.css"%>' 
    rel="stylesheet" type="text/css" /> 

Es ist wie die <%= %> Tags scheint nur ausgewertet bekommen, wenn sie die gesamte HTML-Attribut repräsentieren. Ansonsten behandelt der Motor es nur wörtlich. Was Sie hier sehen, ist nicht HTML-Codierung des Ergebnisses, sondern URL-Codierung des Literalwerts zwischen Anführungszeichen.

+0

Nein, der OP-Code sollte funktionieren. Ich habe es gerade versucht zu verifizieren und es funktioniert wie geschrieben gegen mein MVC2-Projekt ... –