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

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009