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

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Motor Trend Channel

    Motor Trend

    11 Mart 2006