我想制作一个HtmlHelper方法来生成一个带有两个li标签的无序列表的Html。进来的值将是两个对象的IEnumerable,每个对象都希望每个对象的字符串在li标签中可见。
<div id="pages">
<ul>
<li>somePage1.jpg</li> <--One of the two objects in the enumerable
<li>somePage.jpg</li> <--Second of the two objects in the enumerable
</ul>
</div>
对于传入的每个模型对象,将生成以前的代码。
提前致谢。我希望我能很好地描述我的情况。这是我第一次使用这种技术。
答案 0 :(得分:2)
作为一个例子,这样的事情(从我的一个帮助者快速和肮脏的适应,但没有测试你的情况)。我建议你做一些研究 - 网上有很多例子。
public static MvcHtmlString TaskTableFor<TModel, TValue>(this HtmlHelper<TModel> helper,
Expression<Func<TModel, TValue>> expression)
{
// Get the model metadata
ModelMetadata metaData = ModelMetadata
.FromLambdaExpression(expression, helper.ViewData);
IEnumerable<string> items= metaData.Model as IEnumerable<string>;
if (items == null || items.Count() != 2)
{
throw new ArgumentException("Invalid collection");
}
StringBuilder html = new StringBuilder();
TagBuilder first = new TagBuilder("li");
first.InnerHtml = items.First();
html.Append(first.ToString());
TagBuilder second = new TagBuilder("li");
second.InnerHtml = items.Last();
html.Append(second.ToString());
TagBuilder list = new TagBuilder("ul");
list.InnerHtml = html.ToString();
return MvcHtmlString.Create(list.ToString());
}