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

  • Caina Mondo Zine

    Caina Mondo

    13 EKİM 2007
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • TheTwistedFrequency

    TheTwistedFr

    26 NİSAN 2010