2012-02-23 10 views
1

は、だから私は、これは今、私はそれがServicioためEditorTemplateを作成するのです達成したいものを私のモデルいる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 
} 

ある

このモデルにいるICollectionフィールドを扱う大きなトラブルを持っています実際に私はそれをしましたが、それは強くタイプするメインビューの問題ですRegisterModel各ServicioをICollection <から私のEditorTemplateに渡す方法がありません。このようにしましたが、うまくいきませんでした。

@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

+0

http://stackoverflow.com/questions/4652457/asp-net-mvc-problem-with-editortemplate-for-icollectiont-mapped-to-enumには既に同じ投稿があります –

答えて

0

@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> 
} 

とその方法を

<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> 

を交換し、あなたはModel.Servicesで、各サービスごとに(添付ラベル付き)エディタを持っています。

+0

-1これはあなたのコントロール用の要素IDを重複させ、データをフォームに投稿したいとき(htmlも無効です)は機能しません。 Imhoは良い考えではありません。 – Andreas

+0

私が提案した方法でやらなければならない理由がさらに深い理由があります。私はこの答えを書いたときに何か他のことを考えました。 – penartur

関連する問題