SORU
26 Mart 2010, Cuma


Nasıl veri-* ASP.NET MVC öznitelikleri HTML 5 kullanmak

ASP.NET MVC 1 projemde HTML5 data- attributes kullanmaya çalışıyorum. (C ben# ve ASP.NET MVC çaylak.)

 <%= Html.ActionLink("« Previous", "Search",
     new { keyword = Model.Keyword, page = Model.currPage - 1},
     new { @class = "prev", data-details = "Some Details"   })%>

"Veri-ayrıntılar htmlAttributes ver yukarıda" aşağıdaki hata oluştu:

 CS0746: Invalid anonymous type member declarator. Anonymous type members 
  must be declared with a member assignment, simple name or member access.

Data_details, ama "" spec. göre veri-başlamak gerek sanırım kullandığımda çalışıyor

Soru:

  • Orada herhangi bir şekilde bu çalışma ve HTML5 veri kullanmak için Html ile bağlıyor.ActionLink veya benzer Html yardımcıları ?
  • Başka bir alternatif mekanizma bir eleman için özel veri eklemek var mı? Bu veriler daha sonra JS tarafından işlenecek.

CEVAP
23 Aralık 2010, PERŞEMBE


Bu sorun ASP.NET MVC 3'te giderilmiştir. Onlar şimdi otomatik olarak tire html öznitelik özelliklerini vurgular dönüştürmek. MVC alt çizgi, alt çizgi kullanan bir çizgi istediğiniz güvenle ima böylece html öznitelikleri yasal değildir, bu konuda şanslı.

Örneğin:

@Html.TextBoxFor(vm => vm.City, new { data_bind = "foo" })

MVC bu işlerler 3:

<input data-bind="foo" id="City" name="City" type="text" value="" />

Eğer hala MVC eski bir sürümünü kullanıyorsanız, MVC 3 Ne MVC3 kaynak kod ödünç aldığım bu statik bir yöntem oluşturarak taklit edebilirsiniz:

public class Foo {
    public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes) {
        RouteValueDictionary result = new RouteValueDictionary();
        if (htmlAttributes != null) {
            foreach (System.ComponentModel.PropertyDescriptor property in System.ComponentModel.TypeDescriptor.GetProperties(htmlAttributes)) {
                result.Add(property.Name.Replace('_', '-'), property.GetValue(htmlAttributes));
            }
        }
        return result;
    }
}

Ve sonra bu gibi kullanabilirsiniz:

<%: Html.TextBoxFor(vm => vm.City, Foo.AnonymousObjectToHtmlAttributes(new { data_bind = "foo" })) %>

ve bu veri-* doğru öznitelik işlerler:

<input data-bind="foo" id="City" name="City" type="text" value="" />

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008