Передача html в функцию asp.net mvc - PullRequest
2 голосов
/ 28 октября 2011

У меня есть Html вспомогательный метод, создающий флажок вместе с некоторым текстом, который я передаю.

@Html.CheckBoxFor(x => x.SomeProperty,@<text> <ul> <li> </li> </ul>           </text>}))


public static MvcHtmlString CheckBoxFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, bool>> expression, ?? )
    {
        var chkBox = helper.CheckBoxFor(expression).ToString();

        return MvcHtmlString.Create(string.Format("<li>{0}</li><div>{1}</div>", chkBox, ??);
    }

Что будет тогда сигнатурой моего метода.Некоторая лямбда / выражение или что-то.

Помощь будет оценена.

С уважением

Parminder

Ответы [ 2 ]

6 голосов
/ 28 октября 2011

Я бы порекомендовал вам посмотреть шаблонных делегатов бритвы . Так что в вашем случае помощник может выглядеть примерно так:

public static MvcHtmlString CheckBoxFor<TModel>(
    this HtmlHelper<TModel> helper, 
    Expression<Func<TModel, bool>> expression,
    Func<object, HelperResult> template)
{
    var chkBox = helper.CheckBoxFor(expression).ToHtmlString();
    return MvcHtmlString.Create(
        string.Format("<li>{0}</li><div>{1}</div>", chkBox, template(null))
    );
}

и в представлении:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.CheckBoxFor(
        x => x.SomeProperty,
        @<text><ul><li></li></ul></text>
    )
    <input type="submit" value="OK" />
}
0 голосов
/ 28 октября 2011

Просто string.Это входит в string.Format, так что это дает вам подсказку.

...