0

にビューから戻って渡されません。SelectListItemプロパティは、私は、このビューモデルを持っているコントローラ

public class UserViewModel 
{ 
    public string ID { get; set; } 

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

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

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

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

    [DataType(DataType.PhoneNumber)] 
    [Display(Name = "Teléfono")] 
    public string PhoneNumber { get; set; } 

    [Display(Name = "Ciudad")] 
    public System.Web.Mvc.SelectListItem City { get; set; } 

    [Display(Name = "Empresas")] 
    public IEnumerable<System.Web.Mvc.SelectListItem> Empresas { get; set; } 

    [Required] 
    [Display(Name = "Perfil")] 
    public string Role { get; set; } 

    [Display(Name = "Está Vigente")] 
    public bool Vigente { get; set; } 
} 

私が午前問題は、私は(フォームで市とEmpresasで何かを選択すると、彼らがしていることです両方のSELECTフィールド)、それらはUserViewModelパラメータのコントローラに渡されません。

public JsonResult EditUser(UserViewModel model) 
    { 
      ..... 
    } 

他のプロパティのみが渡されます。

これを適切に管理する方法は何ですか?

EDIT:

これは、ビューの一部です:

  @using (Html.BeginForm("EditUser", "Account", new { area = "Security" }, FormMethod.Post, new { @class = "form-horizontal form-label-left", role = "form", novalidate = "novalidate", id = "frmUsuario" })) 
      { 
       var id = Model == null ? String.Empty : Model.ID; 
       <div class="errores col-md-12 col-sm-12 col-xs-12" style="display: none"> 
        <div class='validation-summary-errors alert alert-danger alert-white rounded' data-valmsg-summary="true"> 
         <div class="icon"> 
          <i class="fa fa-times-circle"></i> 
         </div> 
         <p>Debe completar los campos marcados en forma correcta.</p> 
        </div> 
       </div> 
       @Html.AntiForgeryToken(); 
       <input type="hidden" value="@id" id="id" name="id" /> 
       <div class="item col-md-12 col-sm-12 col-xs-12 form-group has-feedback"> 
        @Html.TextBoxFor(m => m.Nombre, new { @class = "form-control has-feedback-left", placeholder = "Nombre", required = "required" }) 
        <span class="fa fa-user form-control-feedback left" aria-hidden="true"></span> 
       </div> 
       <div class="item col-md-6 col-sm-6 col-xs-12 form-group has-feedback"> 
        @Html.TextBoxFor(m => m.Login, new { @class = "form-control has-feedback-left", placeholder = "Login", required = "required" }) 
        <span class="fa fa-sign-in form-control-feedback left" aria-hidden="true"></span> 
       </div> 

       <div class="item col-md-6 col-sm-6 col-xs-12 form-group has-feedback"> 
        @{ 
         //var requerido = String.IsNullOrEmpty(userId) ? "required" : String.Empty; 
         var requerido = Model == null || String.IsNullOrEmpty(Model.ID); 
         object htmlAttributes = null; 
         if (requerido) 
         { 
          htmlAttributes = new { @class = "form-control has-feedback-left", placeholder = "Contraseña", required = "required" }; 
         } 
         else 
         { 
          htmlAttributes = new { @class = "form-control has-feedback-left", placeholder = "Contraseña" }; 
         } 
        } 
        <!-- Para evitar que los password managers llenen los campos --> 
        <input type="text" id="hidUser" style="display: none" /> 
        <!-- Para evitar que los password managers llenen los campos --> 
        <input type="password" id="hidPassword" style="display: none" /> 

        @Html.PasswordFor(m => m.Password, htmlAttributes) 
        <span class="fa fa-key form-control-feedback left" aria-hidden="true"></span> 
       </div> 

       <div class="item col-md-6 col-sm-6 col-xs-12 form-group has-feedback"> 
        @Html.TextBoxFor(m => m.Email, new { @class = "form-control has-feedback-left", placeholder = "E-mail", required = "required" }) 
        <span class="fa fa-envelope form-control-feedback left" aria-hidden="true"></span> 
       </div> 

       <div class="item col-md-6 col-sm-6 col-xs-12 form-group has-feedback"> 
        @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "form-control has-feedback-left", placeholder = "Teléfono" }) 
        <span class="fa fa-phone form-control-feedback left" aria-hidden="true"></span> 
       </div> 

       <div class="item col-md-12 col-sm-12 col-xs-12 form-group"> 
        @Html.DropDownListFor(m => m.City, new SelectList(new List<SelectListItem>()), new { style = "width: 100%" }) 
       </div> 

       <div class="item col-md-12 col-sm-12 col-xs-12 form-group"> 
        @Html.DropDownListFor(m => m.Role, new SelectList(new List<SelectListItem>()), new { style = "width: 100%" }) 
       </div> 

       <div class="item col-md-12 col-sm-12 col-xs-12 form-group"> 
        @Html.DropDownListFor(m => m.Empresas, new SelectList(new List<SelectListItem>()), new { style = "width: 100%", multiple = "multiple" }) 
       </div> 

       <div class="item col-md-12 col-sm-12 col-xs-12 form-group"> 
        Está Vigente 
        @Html.CheckBoxFor(m => m.Vigente, new { @class = "flat" }) 
       </div> 
      } 
+0

コントローラを追加して問題をよりよく理解するためのコードを表示できますか? – hasan

+0

あなたのビューも共有してください。 – Saket

+0

フォームの関連部分を追加しました。 – jstuardo

答えて

0

UserViewModal

public string City { get; set; } 

をシティプロパティの種類を変更してください。そして、それがためにコントローラに選択されたオプションの値を返します。例:

<select 
<option value="1">Delhi </option> 
<option value="2">Surat </option> 
</select> 

デリーを選択すると、値1がプロパティに割り当てられます

+0

私は単純な型を渡すだけです。 Select2 jqueryプラグインを使用しているため、そのオブジェクトを渡そうとしていましたが、デフォルト値を選択するためにテキストも渡す必要があります。私は、ビューがロードされたときに別のプロパティまたはメソッドを使ってデータベースからテキストを取得する必要があると思います。 – jstuardo

0

ドロップダウンリストに何も表示されないのでしょうか? ビューモデルには、AvailableCitiesやCityなどの2つ以上のプロパティが含まれている必要があります。

public List<SelectListItem> AvailableCities { get;set; } 
public string City { get;set; } 

AvailableCitiesには、dropdowに表示するすべての都市が含まれています。そしてCityは、価値のあるユーザーを選択するために使用しています。あなたのビューで

@Html.DropDownListFor(m => m.City, Model.AvailableCities, new { @class = "form-control" }) 

今のところ、あなたは、ドロップダウン・ショーンが表示されるはずですし、あなたのアクションで選択した値を得ることができました。

+0

Hehehe .....あなたの質問は有効ですが、最初はSELECTが空であるのが普通です。これはSelect2 jqueryプラグインで、展開するとドロップダウンに(AJAX経由で)挿入されます。これは、リスト内の都市を検索する機能も提供します。最後に、シンプルな型を使用し、対応するエンティティを取得するモデルに2つのプロパティを追加しました。そうすれば、それは魅力のように機能します。 – jstuardo

関連する問題