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

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • eHow

    eHow

    27 NİSAN 2006