2012-12-23 3 views
0

Comment puis-je créer des lignes de rasoir dynamiques comme:dynamique Razor HTML

@{ 
    string atr = "MyAttribute"; 
    string s = "@Html.DisplayFor(modelItem => item.Type.Word." + atr + ")"; 
} 

et rendent ces lignes à rendre sous forme de lignes de rasoir?

J'ai essayé:

@(new HtmlString(s)) 

et

@Html.Raw(s) 

Mais pas de chance avec ça.

Répondre

0

Après mon recherche, j'ai découvert que ce n'est pas faisable. Au lieu de créer des lignes de rasoir dynamiques, j'ai créé une nouvelle classe d'assistance dans le répertoire Helpers j'ai créé et défini une fonction qui renvoie le mot dans la langue désirée:

public abstract class Helper<T> : WebViewPage<T> 
{ 
    int languageID = Convert.ToInt16(System.Web.HttpContext.Current.Session["Language"]); 
    public virtual string getWord (int? id) 
    { 
     string wantedWord = //operations..; 
     return wantedWord; 
    } 
} 

et défini le pageBaseType dans mon WebConfig.xml dans le répertoire de vues.

<pages pageBaseType="MyProject.Helpers.Helper"> 

Et j'appelle la fonction dans mes Vues:

@getWord(//variables) 
0

Je pense qu'il est réalisable, mais ne pas utiliser HtmlHelpers, utilisez plutôt créé html comme directement ceci:

@foreach(var modelItem in Model){ 
    string atr = "MyAttribute"; 
    string tag = string.Format(@"<a href=""{0}"">{1}</a>","#",modelItem.Type.Word+atr); 
    <text>@tag</text> 
} 

A l'intérieur des supports de rasoir que vous pouvez faire des déclarations conditionnelles qui résulteront en html dynamique

+0

@ {string atr = "" + "MyAttribute"; chaîne tag = chaîne.Format (@ "{1}", "#", item.Type.Word + atr); } @tag Essayé cela mais il renvoie, "{MyProjectName} .Models.Word.Tr" –