我在此页面上,从下拉列表中选择一个项目,然后ajax调用将所选参数传递给控制器​​中的新操作,如下所示:

function select(e) {
    var unit = $("#unitList").data("kendoDropDownList").value();
    var url = '@Url.Content("~/Reports/UnitRunReport/")';

    $.ajax({
        url: url,
        data: { selectedUnit: unit },
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            //
        },
        error: function () {
            //
        }
    });
}


这是我的控制器:

public class ReportsController : BaseController
{
    public ReportsViewModel Model { get; set; }
    //
    // GET: /Reports/

    public ActionResult Index()
    {
        Model = new ReportsViewModel
                    {
                        Units = UnitClient.GetListOfUnits(true, "")
                    };

        return View(Model);
    }

    [HttpGet]
    public ActionResult UnitRunReport(string selectedUnit)
    {
        var unit = Convert.ToInt32(selectedUnit);
        Model = new ReportsViewModel
                    {
                        UnitRuns = RunClient.GetRunListForUnit(unit)
                    };

        return View(Model);
    }
}


我必须将两个操作(Index和UnitRunReport)的视图分开。调试时,它将正确的参数传递给UnitRunReport操作,并通过return View(Model)语句。有人可以解释一下为什么我没有从索引页面重定向到新的UnitRunReport视图吗?

最佳答案

您正在执行ajax通话。 ajax调用不会重定向页面。

重定向到get方法:

window.location = "@Url.Content("~/Reports/UnitRunReport")?selectedunit=" + $("#unitList").data("kendoDropDownList").value();

关于c# - 为什么我的 Action 未返回 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18099018/

10-10 07:53