2016-03-30 14 views
-1

ドロップダウンリストで値を取得しています。ユーザーがドロップダウンリストから任意の値を選択したときに、コントローラで選択した値を取得したかったのです。私の見解である -コントローラのmvcで選択されたインデックスの値を変更する方法C#

@using (Html.BeginForm("ApReport", "Sales", FormMethod.Post)) 
{ 
    @Html.DropDownList("Ddl", null, "All", new { @class = "control-label"}) 

    @Html.Hidden("rddl")         
} 

コントローラ -

[HttpPost] 
public ActionResult ApReport(ApReport Ddl) 
{ 
    string Ddlvalue = string.Empty; 
    if (Request.Form["rddl"] != null) 
    { 
    Ddlvalue = Request.Form["rddl"].ToString(); 
    } 
} 

が、私は任意の値を取得しておりません。また、私は送信ボタンを使用したくありません。事前に

おかげ

+0

可能な複製(http://stackoverflow.com/questions/27901175/how-to-get-dropdownlist-selectedvalue-in-controller-in-mvc4 [MVC4のコントローラでのDropDownList SelectedValueのを取得する方法] ) –

+0

隠しフィールドは必要ありません。単に '' Request.Form ["rddl"] ''を '' Request.Form ["Ddl"] ''に変更してください。 –

+0

送信ボタンを希望しないという意味ですか? (どのようにデータをコントローラに送りますか)。ドロップダウンの名前は 'name =" Ddl "'です。コントローラのパラメータも 'Ddl'なので、モデルは常に' null'になります。 –

答えて

1

Ajaxを使用すると、ページ全体をリロードせずにメインビューを更新するだけでなく、バ​​ックグラウンドでサーバーにデータを送信するために開発者としてことができます。

これは私がこの作業を達成した方法です。

まず、コントローラでJsonResultを返すアクションを作成しました。これはJSONオブジェクトを呼び出し元のjqueryコードに返します。これを使用して値をビューに戻すことができます。アクションメソッドの例を次に示します。

[HttpGet] 
public JsonResult YourActionName(string selectedValue) //Assuming key in your dropdown is string 
{ 
    var result = DoYourCalculation(selectedValue); 

    return Json(new { myResult = result }, JsonRequestBehavior.AllowGet); 
} 

ここで、jqueryコードを追加する必要があります。私はあなたのビューによって参照される別々のjavascriptファイルにこれを配置することをお勧めします。

ここにはJQueryコードがあり、コントローラのアクションにajaxコールがあります。サーバーへのAjax呼び出しは、以下に示すように、DropDownの 'change'イベントによって開始され、JQueryで処理されます。

$(function() { 
     $(document) 
      .on('change', '#Ddl', function(){ 
       var valueofDropDown = $(this).val(); 
       var url = '/YourControllerName/YourActionName'; 
       var dataToSend = { selectedValue: valueofDropDown } 

       $.ajax({ 
        url: url, 
        data: dataToSend, 
        type: 'GET', 
        success: function (dataReceived) { 
         //update control on View 
         var receivedValue = dataReceived.myResult ; 
         $('YourControlIDToUpdate').val(receivedValue); 
       } 
      }) 
     }); 
    }; 
+0

多くのありがとう、私が正確に望んでいたもの – ronibd

関連する問題