2016-07-18 2 views
0

Я использую Ajax для отправки значения в мой контроллер с точки зрения:Кнопка не посылает на правильный взгляд

Посмотреть, где собрана информация для отправки к другому контроллеру:

@using (Html.BeginForm(null, null, FormMethod.Get, htmlAttributes: new { id = "GenerateForm" })) 
{ 
<div class="form-horizontal"> 
    <div class="form-group"> 
     @Html.Label("Choose AC:", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("AC", null, "-- Select AC --", htmlAttributes: new { id = "AC", @class = "form-control" }) 
     </div> 
    </div> 
</div> 


<div class="form-horizontal"> 
    <div class="form-group"> 
     @Html.Label("Choose Month:", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("Months", null, "-- Select Month --", htmlAttributes: new { id = "Month", @class = "form-control" }) 
     </div> 
    </div> 
</div> 

<div class="form-horizontal"> 
    <div class="form-group"> 
     @Html.Label("Year:", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("Years", null, "-- Select Year --", htmlAttributes: new { id = "Year", @class = "form-control" }) 
     </div> 
    </div> 
</div> 

<br /> 

<input type="submit" id="SendToController" class="btn btn-primary" value="Generate" /> 
} 


<script type="text/javascript"> 
    $('#SendToController').on('click', function() { 
     sendToController(); 
     return false; 
    }); 
    function sendToController(){ 
     var selectedAC = $('#AC').val(); 
     var selectedMonth = $('#Month').val(); 
     var chosenYear = $('#Year').val(); 
     $.ajax({ 
      url: '/MonthReports/Generate', 
      data: { 'id' : selectedAC, 'monthValue' : selectedMonth, 'year' : chosenYear }, 
      type: 'GET', 
      cache: false, 
      success: function(data){}, 


     }); 
    } 

контроллер Метод:

public ActionResult Generate(int id, int monthValue, string year) 
{ 
    List<DailySum> lstDailySum = db.DailySum.Where(x => x.AID == id && x.Day.Month == monthValue + 1 && x.Day.Year.ToString() == year && x.deleted == false).ToList(); 
     List<string> lstInc = lstDailySum.Select(x => x.codeAC.text).Distinct().ToList(); 
     List<MReport> lstMReport = new List<MReport>(); 

     foreach (var inc in lstInc) 
     { 
      MReport mReport = new MReport(); 
      mReport.Inc = inc; 
      mReport.Count = lstDailySum.Where(x => x.codeAC.text == incident).Count(); 
      lstMReport.Add(mReport); 

     } 

     return View(lstMReport); 
    } 

Теперь значения передаются при нажатии кнопки, и весь метод работает, за исключением того, что вид не отображается. Он просто остается в представлении, где была нажата кнопка ... no Generate View появляется.

Я установил точку останова в представлении «Создать», и он попадает, но представление не отображается?

Я не знаю, как это объяснить. Код cshtml поражен точкой останова, но страница не отображается. Она просто остается на странице, на которой была нажата кнопка.

Любая помощь приветствуется.

ответ

2

Поскольку вы используете ajax, вы должны обрабатывать данные в обратном вызове вашего вызова ajax. Как ваш код написан, вы ничего не делаете с видом. Вид отображается переменной data.

попробовать что-то вроде этого:

$.ajax({ 
    url: '/MonthReports/Generate', 
    data: { 'id' : selectedAC, 'monthValue' : selectedMonth, 'year' : chosenYear }, 
    type: 'GET', 
    cache: false, 
    success: function(data){ 
     $("body").html(data); 
    } 
}); 
+0

Это было. Большое вам спасибо за помощь! –

Смежные вопросы