按钮未发送到正确的视图

时间:2016-07-18 17:32:55

标签: ajax asp.net-mvc

我正在使用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);
    }

现在单击按钮时会传递值,并且整个方法都有效,除了View没有显示...它只停留在最初单击按钮的View上... no Generate View出现。

我在Generate视图上放置了一个断点,它确实被点击了,但视图没有显示?

我不知道怎么解释它... cshtml代码是用断点命中的,但是页面没有显示..它只是停留在点击按钮的页面上。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

因为您使用的是ajax,所以您应该处理ajax调用的success回调中的数据。编写代码的方式,您不会对视图执行任何操作。视图呈现为data变量。

尝试这样的事情:

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