2016-05-18 26 views
-1

私はhtml、razor、およびMVCの新機能ですので、これは簡単な修正ですが謝罪しますが、解決しないままこの問題を解決しました。ドロップダウンリストが変更されるたびに、部分的なビューを再生成するコントローラアクションがトリガされるようにしたいと思います。私はこれを 'onchange' html属性で実装しようとしました。また、ドロップダウンのidを設定し、jquery関数がそれをトリガーするようにしました。しかし、私は以下の3つの機能のいずれかを発動することはできません。ここでDropDownListForは変更されたときに関数を呼び出さない

@model AislesOnlineDataControl.Models.PickupPointsListModel 

@{ 
    ViewBag.Title = "PickupPointsList"; 
} 

<script> 
    function Select() { 
    @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }; 

    $("#PupDropDown").on('change', function() { 
    @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }); 

    $(function() { 
    $('#PupDropDown').change(function() { 
     Model.selectedID = Convert.ToInt32(selectPoint.SelectedValue); 
     //window.location.reload(); 
     @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }); 
    }); 
</script> 

<h2>Manage Pick-Up Points</h2> 


@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

     @{SelectList selectPoint = new SelectList(Model.selectedPoint, "Value", "Text");} 
     <div class="form-inline"> 
      <div class="row"> 
      @Html.DropDownListFor(model => model.selectedID, selectPoint, null, new { @id="PupDropDown", @onchange = "Select()" }) 
      @Html.ActionLink("New", "CreatePickup", "PickUpPoint", null, new { @class = "btn btn-default pull-right" }) 
      </div> 
     </div> 
     <div> 
      @Html.Partial("~/Views/PickUpPoint/PickupPartial.cshtml", Model.points[Model.selectedID]) 
     </div> 
    </div> 
} 
+0

で簡単なAJAX呼び出しを行う例である '@ Html.Action()'かみそりのコードであり、そのクライアントに渡す前に、サーバー上で評価されます。クライアント側のイベントに応じてクライアント上で再評価されることはありません。サーバーメソッドを呼び出して部分的なビューを返すには、ajaxを使用する必要があります。 –

答えて

0

@Html.Action(..)は、最終的にhtmlコードのブロックであることが判明したあなたの部分図からActionResultを返します。..私のコードです。だからあなたのJavaScriptブロックにあなたのhtmlコードを置くことはできません。

あなたが必要とするのは、アクションにResult:ajax callを与え、Resultをレンダリングすることです。

はここasp.Net MVC

https://stackoverflow.com/a/16186212/2802809

関連する問題