SORU
6 ŞUBAT 2011, Pazar


Sistemi Kullanarak.ComponentModel.Varlık Çerçevesi ile eğlence devri açmıştır 4.0

MVC3 ve benim model olarak Varlık Çerçevesi 4.0 Varlıkları kullanarak çalışıyorum. Şu ana kadar her şey harika kadarıyla bir model olarak (/sayfa nesiller tüm crud işlemleri kullanıma hazır) kullanarak çalışır. Ama merak ediyorum, nasıl bir model el ile oluşturmak gibi etiketler ve doğrulama bilgisi aynı sağlam mı?

Burada ne demek istediğimi bir örnek. Bu bir sınıf örnek MVC3 projesi tarafından oluşturulur:

public class LogOnModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

Yukarıdaki örnek ile, bu alan için bir etiket (Ekran), işlenen alır ve ne kullanmak için (Şifre) belirtebilirsiniz. Ancak, ne zaman ben kullanmaya varlık çerçevesi ve ıkın görünümü altında, otomatik olarak oluşturulan bir etiket sadece alan adları ve bir şey istiyorum kullanıcı görmek/okumak zorunda:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Person</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.MiddleName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MiddleName)
            @Html.ValidationMessageFor(model => model.MiddleName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.LastName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.LastName)
            @Html.ValidationMessageFor(model => model.LastName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Birthdate)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Birthdate)
            @Html.ValidationMessageFor(model => model.Birthdate)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>}

enter image description here

Benim sorum:Nasıl EF4 kullanarak oluşturulan varlıklar için bu ekstra süslemeleri eklerim? Yok Sistem dışında bir şey.ComponentModel.Kullanma olmam gerektiğini eğlence devri açmıştır? Biliyorum Varlıklar Yeniden almak ve bu muhtemelen iyi bir fikir değil eklemek için bu varlıkları' kod doğrudan, ama nedense hatırlamıyorum daha iyi bir yaklaşım daha elle girerek etiketi metin görünümü (topal, sebep yok etmek için bunu yapmak zorunda, bu MVC!). Uygulama benim modeli için doğru ekran bilgilerini girip MVC yaklaşımı devam edebilmek için yeterli dinamik şekilde devam etmek istiyorum. Bunu nasıl yapabilirim?

CEVAP
6 ŞUBAT 2011, Pazar


ASP.NET MVC için (sadece Silverlight için) yapmadım ama aynı ilkeler geçerli olacak sanırım. Sen-ebilmek yaratmak bir "meta dostum sınıf" olarak aşağıda, çünkü türleri tarafından oluşturulan EF olmalıdır kısmi, böylece sen-ebilmek eklemek biraz daha onları (gibi MetadataTypeAttribute) ve sonra da oluşturduğunuz bu kardeş sınıf tutar meta.

Biraz çirkin, ama çalışması gerekir. Böyle bir şey (EF varlık adlı varsayarak "") Kişi:

[MetadataType(typeof(PersonMetadata))]
public partial class Person { 
  // Note this class has nothing in it.  It's just here to add the class-level attribute.
}

public class PersonMetadata {
  // Name the field the same as EF named the property - "FirstName" for example.
  // Also, the type needs to match.  Basically just redeclare it.
  // Note that this is a field.  I think it can be a property too, but fields definitely should work.

   [Required]
   [Display(Name = "First Name")]
  public string FirstName;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • cdgotx

    cdgotx

    8 Kasım 2011
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006