0

私はいくつかの値で1つのドロップダウンをバインドし、選択したドロップダウンが変更されたときに投稿アクションを呼び出しました。

@Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select", new
       {
           disableValidation = "true",
           onchange = @"
            var form = document.forms[0]; 
            form.action='Index';
            form.submit();"
       })

これは、 call my controller post action に対して正常に機能しています。しかし、モデルの DistrictId プロパティでドロップダウン選択値を取得できません。

私のコントローラ関数は以下のようになります

[HttpPost]
        public ActionResult Index(HomeModel homeModel)
        {
            AdminController adminController = new AdminController();
            Guid userId = new Guid();
            homeModel.ComplianceModelList = complianceRepository.LoadComplianceModel(userId, homeModel.DistrictId);
            LoadDistrict(homeModel);
            return View(homeModel);
        }

homeModel.DistrictId プロパティで選択した DistrictId をドロップダウンしたい。

実行する方法 ?

4

2 に答える 2

2

このようにマークアップを変更します

@Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select")

フォームをシリアル化し、ajax を使用してアクション メソッドに送信するように、変更イベントを処理する JavaScript をいくつか用意します。

$(function(){
  $("#DistrictId").change(function(e){
    var _this=$(this);

    $.post("@Url.Action("Index","Home")",_this.closest("form").serialize(),
                                                             function(response){
          // do something with response.
    });
  });
});

ページにjQueryライブラリがロードされていると仮定します。

于 2013-04-02T13:59:36.797 に答える
1

今、私は解決策を得ました

以下のコードはうまく機能していました。

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <h2 class="gridTitle">
            Compliance</h2>
        if (User.Identity.IsAuthenticated && User.IsInRole("SuperAdmin"))
        {
        <div class="complianceSubDiv">
            <div class="complianceRightDiv">
                @Html.LabelFor(model => Model.DistrictId)
                @Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select", new
           {
               disableValidation = "true",
               onchange = @"                        
                form.submit();"
           })</div>
        </div>
        }
}
于 2013-04-02T15:12:50.363 に答える