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

  • Creavite

    Creavite

    8 Mart 2009
  • jat4011

    jat4011

    16 EKİM 2010
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008