如何创建动态Razor行,如:
@{
string atr = "MyAttribute";
string s = "@Html.DisplayFor(modelItem => item.Type.Word." + atr + ")";
}
并将这些线渲染为Razor线?
我试过了:
@(new HtmlString(s))
和
@Html.Raw(s)
但是没有运气。
答案 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)