SORU
21 Ocak 2011, Cuma


@Yardımcısı yöntem Jilet ile bir jenerik yaratmak mümkün değil mi?

Aşağıdaki gibi görünen bir Jilet bir yardımcısı yazmaya çalışıyorum:

@helper DoSomething<T, U>(Expression<Func<T, U>> expr) where T : class

Ne yazık ki, çözümleyici <T bir HTML öğesi başlangıç olduğunu düşünüyor ve ben bir sözdizimi hatası ile bitirmek. Genel bir yöntem olduğunu Ustura ile bir yardımcı yaratmak mümkün değil mi? Yani, sözdizimi nedir?

CEVAP
12 Mart 2011, CUMARTESİ


BuOlası elde etmek için içinde bir yardımcı dosya ile @functions sözdizimi ama eğer istediğiniz jilet tarzı okunabilirlik sizi yönlendiren, size de aramalısınız, düzenli bir yardımcı için HTML uygun ve bitiş.

Yardımcı dosya fonksiyonları hala onun yöntemlerini kullanmak niyetinde olsaydın sayfasından HtmlHelper örneği geçirmek için çok statik olduğunu unutmayın.

örneğin Görünümleri\MyView.cshtml:

@MyHelper.DoSomething(Html, m=>m.Property1)
@MyHelper.DoSomething(Html, m=>m.Property2)
@MyHelper.DoSomething(Html, m=>m.Property3)

App_Code\MyHelper.cshtml:

@using System.Web.Mvc;
@using System.Web.Mvc.Html;
@using System.Linq.Expressions;
@functions
{
    public static HelperResult DoSomething<TModel, TItem>(HtmlHelper<TModel> html, Expression<Func<TModel, TItem>> expr)
    {
        return TheThingToDo(html.LabelFor(expr), html.EditorFor(expr), html.ValidationMessageFor(expr));
    }
}
@helper TheThingToDo(MvcHtmlString label, MvcHtmlString textbox, MvcHtmlString validationMessage)
{
    <p>
        @label
        <br />
        @textbox
        @validationMessage
    </p>
}
...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Central

    Android Cent

    13 Kasım 2008
  • Apple

    Apple

    22 HAZİRAN 2005
  • UKF

    UKF

    2 Aralık 2009