2012-02-23 61 views
1

所以我有一個很大的麻煩處理這個模型的ICollection的領域如何處理的ICollection <>字段

這是我的模型

public class RegisterModel 
{ 
    public RegisterModel() 
    { 
     this.Servicios = new HashSet<Servicio>(); 
    } 

    [Required(ErrorMessage="El nombre de usuario es requerido.")] 
    [Display(Name = "Usuario")] 
    public string UserName { get; set; } 

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

    [Required(ErrorMessage = "La contraseña es obligatoria.")] 
    [StringLength(100, ErrorMessage = "El {0} debe tener al menos {2} caracteres de longitud.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    [Display(Name = "Contraseña")] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Display(Name = "Confirmar contraseña.")] 
    [Compare("Password", ErrorMessage = "La contraseña y la confirmacion no coinciden.")] 
    public string ConfirmPassword { get; set; } 

    [Required(ErrorMessage="Seleccione los servicios que desea agregar al usuario")] 
    [Display(Name="Servicio")] 
    public ICollection<Servicio> Servicios { get; set; } //This field 
} 

現在我要實現它的創建Servicio一個EditorTemplate什麼實際上我做到了,但問題是,在主認爲,強烈鍵入RegisterModel我也不怎麼從ICollection的<>我EditorTemplate我試着像這樣通過各SERVICIO,但它不工作

@model SodexoSAT.Models.RegisterModel 

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true, "No se Pudo crear la cuenta. Por favor corrija los errores e inténtelo de nuevo.") 
<div> 
    <fieldset> 
     <legend>Información de la cuenta</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(m => m.UserName) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(m => m.UserName) 
      @Html.ValidationMessageFor(m => m.UserName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(m => m.Password) 
     </div> 
     <div class="editor-field"> 
      @Html.PasswordFor(m => m.Password) 
      @Html.ValidationMessageFor(m => m.Password) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(m => m.ConfirmPassword) 
     </div> 
     <div class="editor-field"> 
      @Html.PasswordFor(m => m.ConfirmPassword) 
      @Html.ValidationMessageFor(m => m.ConfirmPassword) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(m => m.Servicios) 
     </div> 
     <div class="editor-field"> 
      <div> 
       @Html.EditorFor(m => Model.Servicios) <--doesn't work 
       @Html.EditorForModel(m => Model.Servicios) <--doesn't work 
       @Html.EditorForModel(Model.Servicios) <--doesn't work too 
      </div> 
     </div> 

     <p> 
      <input type="submit" value="Crear Usuario" class="botonAtento" /> 
     </p> 
    </fieldset> 
</div> 

}

+0

你有麻煩,但確切的問題是什麼||您遇到錯誤 – MethodMan 2012-02-23 18:24:46

+0

http://stackoverflow.com/questions/4652457/asp-net-mvc-problem-with-editortemplate-for-icollectiont-mapped-to-enum已經有這個相同的帖子 – 2012-02-23 18:34:33

回答

0

更換

<div class="editor-label"> 
     @Html.LabelFor(m => m.Servicios) 
    </div> 
    <div class="editor-field"> 
     <div> 
      @Html.EditorFor(m => Model.Servicios) <--doesn't work 
      @Html.EditorForModel(m => Model.Servicios) <--doesn't work 
      @Html.EditorForModel(Model.Servicios) <--doesn't work too 
     </div> 
    </div> 

@foreach(var service in m.Servicios) 
{ 
    <div class="editor-label"> 
     @Html.LabelFor(service) 
    </div> 
    <div class="editor-field"> 
     <div> 
      @Html.EditorFor(service) <--doesn't work 
     </div> 
    </div> 
} 

這樣一來,你就必須在每Model.Services每個服務編輯器(與附加標籤)。

+0

-1這將生成重複元素標識符爲您的控件,並且當您要將數據發佈到表單(並且無效的html)時不起作用。 Imho不是一個好主意。 – Andreas 2012-02-23 18:40:27

+0

爲什麼不以我建議的方式做更深層次的原因。我在寫這個答案時只是想到了別的東西。 – penartur 2012-02-23 19:13:22

相關問題