Используйте Html Helpers.
Подобным образом создайте вспомогательные методы в static
классе:
public static string Label(this HtmlHelper helper, string target, string text)
{
return String.Format("<label for='{0}'>{1}</label>", target, text);
}
.. затем используйте по вашему мнению:
<span><% =Html.Label("FinishDateTime.LocalDatetime", "Finish Time:")%><br />
Вы могли бы создать вспомогательный метод с именем возможно RenderCompanyName(string[] companies)
, который проверял бы наличие нулей, выполнял манипуляции с заглавными буквами и отображал html между ними - все в одном помощнике, если хотите.
Также: методы действия контроллера должны быть легкими - т.е. только получение данных и возвращение просмотров. Вы должны делегировать такие вещи, как манипулирование данными для представления, представлениям и помощникам HTML.
РЕДАКТИРОВАТЬ: Вот помощник, который вы могли бы после:
Этот помощник отображает IList<>
в html в виде неупорядоченного списка <ul>...</ul>
. Полезно то, что он дает вам контроль над тем, как выводится список через CSS И , и позволяет отображать дополнительный HTML / контент для каждого элемента. Посмотрите - это помощник:
public static string UnorderedList<TItem>(this HtmlHelper helper,
IList<TItem> items, Func<TItem, string> renderItemHtml,
string ulID, string ulClass, string liClass)
{
StringBuilder sb = new StringBuilder();
// header
if (!ulID.IsNullOrTrimEmpty()) sb.AppendFormat("<ul id='{0}'", helper.Encode(ulID.Trim()));
else sb.AppendFormat("<ul");
if (!ulClass.IsNullOrTrimEmpty()) sb.AppendFormat(" class='{0}'>", helper.Encode(ulClass.Trim()));
else sb.AppendFormat(">");
// items
foreach (TItem i in items)
{
if (!liClass.IsNullOrTrimEmpty())
sb.AppendFormat("<li class='{0}'>{1}</li>", helper.Encode(liClass.Trim()),
renderItemHtml(i));
else
sb.AppendFormat("<li>{0}</li>", renderItemHtml(i));
}
// footer
sb.AppendFormat("</ul>");
return sb.ToString();
}
.. использовать это легко. Вот простой пример для отображения списка тегов:
<div id="tags">
<h2>Tags</h2>
<%=Html.UnorderedList<Tag>(Model.Tags.Tags,tag=>
{
return tag.Name;
},null,null,null) %>
</div>
.. в моем примере использования вы можете видеть, что я решил не указывать атрибуты css или id, а просто возвращаю имя элемента Tag
через анонимный делегат. Анонимные делегаты очень просты в использовании .. в вашем случае, может быть, что-то вроде этого будет работать:
<div id="tags">
<h2>Tags</h2>
<%=Html.UnorderedList<string>(ViewData["companies"],company=>
{
if (someCondition) return company.ToUpper();
else return company;
},null,null,null) %>
</div>
.. ViewData["companies"]
- это IList<string>
для простоты.