我正在尝试使用TagBuilder添加选项标签。但是我不知道如何将tagbuilder写入View。
代码:
@foreach (IActivityType at in _data.Context.ActivityType)
{
TagBuilder opt = new TagBuilder("option");
opt.Attributes.Add("value", at.Id.ToString());
if (at.Id.Equals(activity.ActivityTypeId))
{
opt.Attributes.Add("selected", "selected");
}
@Html.Raw(opt);
}
答案 0 :(得分:2)
尝试
@Html.Raw(opt.ToString(TagRenderMode.Normal));
PS:您可能需要使用带有SetInnerText()
标签的option
请注意,更可取的方法是创建自定义HTML帮助程序并相应地使用它。 Check This Link
答案 1 :(得分:0)
因此最终得到了一个很好的解决方案,它带有一个IHtmlContent扩展名,该扩展名将标记返回为html。
public static string ToZtring(this IHtmlContent content, bool encode = false)
{
string result = default;
using (StringWriter sw = new StringWriter())
{
content.WriteTo(sw, HtmlEncoder.Default);
result = sw.ToString();
}
if (!encode)
{
result = HttpUtility.HtmlDecode(result);
}
return result;
}
TagBuilder opt = new TagBuilder("option");
opt.Attributes.Add("value", "demo");
@Html.Raw(opt.ToZtring());
我为ToZstring()调用了扩展方法,以避免使用ToString()命名问题