Я сделал свой первый помощник MVC для разделения длинных строк в таблице, и я также проверяю, является ли строка NULL, и пользователь может отправить NullString ='NA'
вместо пустой строки.Объект MVC Helper и его название
public static IHtmlString Split(
this HtmlHelper helper,
string source,
int size = 30,
string NullString = "")
Теперь у меня есть ситуация, когда строка находится внутри объекта, и этот объект также может быть нулевым.
@if (item.city == null)
{
<td>NA</td>
}
else
{
<td class="format">@item.city.name</td>
}
Я хочу сделать что-то общее, где я получаю объект и имя свойства. Тогда я могу получить значение от объекта.
public static IHtmlString Split(
this HtmlHelper helper,
OBJECT source,
STRING property,
int size = 30,
string NullString = "")
Есть ли способ я могу получить source.property()
от родового объекта?
по запросу полный код моей текущей функции
public static IHtmlString Split(this HtmlHelper helper, string source, int size = 30, string NullString = "")
{
TagBuilder tb = new TagBuilder("td");
tb.Attributes.Add("class", "format");
if (source == null)
{
tb.InnerHtml = NullString;
}
else if (source.Length < size)
{
tb.InnerHtml = source;
}
else
{
int middle = source.Length/2;
int before = source.LastIndexOf(' ', middle);
int after = source.IndexOf(' ', middle + 1);
if (before == -1 || (after != -1 && middle - before >= after - middle))
{
middle = after;
}
else
{
middle = before;
}
string s1 = source.Substring(0, middle);
string s2 = source.Substring(middle + 1);
tb.InnerHtml = s1 + "<br />" + s2;
}
MvcHtmlString result = new MvcHtmlString(tb.ToString(TagRenderMode.Normal));
return result;
}
Можете ли вы опубликовать код вашей функции split? – shenku
Хорошо, но это не та часть, с которой у меня проблема. –
Вместо источника объекта вы должны написать выражение Lambda с помощью выражения 'Expression>'. –