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

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011