Я пытаюсь обработать случай DateTime, который может быть нулевым при рендеринге в ASP.NET MVC3 WinGrid. Я получаю сообщение об ошибке при попытке установить WebGridColumn. У меня есть одна работающая, другая нет. Тот, который работает, менее понятен, поскольку html генерируется внутри вспомогательной функции. Чего я не могу понять, так это почему идеальный вариант не работает.
Вот тот, который работает:
$gridSummary.Column("OngoingDate",
header: "Ongoing",
format: Html.DateTimeActionLink,
style: "ongoingDate")
public static object DateTimeActionLink(this HtmlHelper htmlHelper, dynamic item)
{
DateTime? linkDateTime = item.OngoingDate;
if (linkDateTime != null && linkDateTime.HasValue)
{
var x = linkDateTime.Value.ToString("MM/dd/yyyy");
return LinkExtensions.ActionLink(htmlHelper, x, "Edit", "MdsAsmtSectionQuestions", new { mdsId = item.OngoingId }, null);
}
return MvcHtmlString.Empty;
}
вот тот, который не работает:
$gridSummary.Column("AssessmentInfo", header: "Open Type | ARD",
format: (item) =>
{
return Html.DateTimeActionLink(
item.AssessmentDate,
"MM/dd/yyyy",
x => Html.ActionLink(item.AssessmentInfo + " | " + x, "Edit", "MdsAsmtSectionQuestions", new { mdsId = item.OngoingId }, null));
},
style: "assessmentInfo")
public static object DateTimeActionLink(this HtmlHelper htmlHelper, dynamic item, string format, Func<string, MvcHtmlString> actionLink)
{
Nullable<DateTime> linkDateTime = item;
if (linkDateTime != null && linkDateTime.HasValue)
return actionLink(linkDateTime.Value.ToString(format));
return MvcHtmlString.Empty;
}