0

jlst オブジェクト (いくつかのドロップダウン ボックスの選択された ID を含む) によってフィルター処理されたデータを含む .csv ファイルを取得しようとしています。ajax 呼び出しは次のとおりです。

        $('#moduleCSVReport').click(function () {

        $('#progress').show();
        $.ajax({
            url: '/Reports/GetPageAccessLevelsCSV?obj=' + jlst,
            dataType: "json",
            type: "GET",
            success: function (data) {
                $('#progress').hide();
            }
        });
    });

そして、ここに関数があります:

    public ActionResult GetPageAccessLevelsCSV(string obj)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        ReportsSelectedItems cParams = jss.Deserialize<ReportsSelectedItems>(obj);

        var locationIdFilter = (cParams.LocationId != 0) ? cParams.LocationId : 0;
        var divisionIdFilter = (cParams.DivisionId != 0) ? cParams.DivisionId : 0;

        IList<UserProfile> userProfiles = new List<UserProfile>();
        userProfiles = Session.Query<UserProfile>().Where(n => n.Employee != null && ((n.Employee.Division.Id == cParams.DivisionId || cParams.DivisionId == 0) && (n.Employee.Location.Id == cParams.LocationId || cParams.LocationId == 0))).OrderBy(n => n.Employee.Name).ToList();

        MemoryStream output = new MemoryStream();
        StreamWriter writer = new StreamWriter(output, Encoding.UTF8);

        writer.Write("Name,");
        writer.Write("Team");

        foreach(UserProfile user in userProfiles)
        {
            writer.Write(user.Employee.Name);
            writer.Write(",");
            writer.Write(HasAccessToModule((int)ModuleEnum.Team, user.Id).ToString());
            writer.WriteLine();
        }

        writer.Flush();
        output.Position = 0;

        return File(output, "application/x-ms-excel", "test.csv");
    }

ブレークポイントに従っていましたが、ファイルは正常に生成されたようです。ajax呼び出しでファイルを受け取った後、ファイルを表示する方法がわからないだけです。ファイルを処理する方法が必要だと思います(おそらく成功イベントで)。もしそうなら、どうすればそれを行うことができますか? ありがとう。

4

0 に答える 0