На самом деле, теперь, когда я думаю об этом еще немного, я не думаю, что вы можете использовать Action
такие параметры в Razor.Я вспоминаю, что сталкивался с этим раньше.
Обновлено
С ответом Эндрю Медсестры: " К сожалению, это сделано в текущем парсере, хотя я должен отметить, что мы хотели быулучшаем его. Проблема в том, что разметка действительна только в начале оператора (что технически является тем, где вы ее поместили), но наш C # -парсер не достаточно умен, чтобы в данный момент обнаруживать лямбды. "
Хотя это может быть устаревшим:)
@Html.Repeater(Model, "row", "row-alt",
@<tr class="@item.ClassType : "disabled"">
<td>@item.Name</td>
<td>@item.Description</td>
<td>@Html.RouteLink("Edit", item.ObjectToUseRouteValues("Edit"))</td>
<td></td>
<td>@Html.RouteLink("Select", item.ObjectToUseRouteValues())</td>
</tr>
)
public static IHtmlString Repeater<T>(this HtmlHelper html, IEnumerable<T> items,
string className, string classNameAlt, Func<T, HelperResult> render) {
if (items == null)
return new HtmlString("");
int i = 0;
StringBuilder sb = new StringBuilder();
foreach (var item in items) {
item.ClassType = item.Enabled ? (i++ % 2 == 0 ? className : classNameAlt) : "disabled";
sb.Append(render(item).ToHtmlString());
}
return new HtmlString(sb.ToString());
}
}