创建动态Razor HTML

时间:2012-12-23 21:17:16

标签: asp.net-mvc-3

如何创建动态Razor行,如:

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

并将这些线渲染为Razor线?

我试过了:

@(new HtmlString(s))

@Html.Raw(s)

但是没有运气。

2 个答案:

答案 0 :(得分:0)

我认为这是可以实现但不使用HtmlHelpers,而是使用直接创建的html:

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

在剃刀括号内你可以做条件语句,这将导致动态html

答案 1 :(得分:0)

经过我的研究,我发现这是不可行的。我没有创建动态剃刀行,而是在Helpers目录中创建了一个新的Helper类,我创建并定义了一个以所需语言返回Word的函数:

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;
    }
}

并在Views目录中的WebConfig.xml中定义了pageBaseType。

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

我在我的观点中调用该函数:

@getWord(//variables)