使用ajax从视图访问mvc控制器

时间:2016-01-18 17:17:45

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我试图将数据发送到控制器,以便我可以恢复数据,但它似乎甚至无法进入控制器。这是我的阿贾克斯:

$('#clicker').click(function () {
    $.ajax({
        type: 'GET',
        dataType: 'text',
        url: '@Url.Action("GetControllerVideo", "Login")',
        success: function (ItemId) {
            alert(ItemId)
        }
    });
});

控制器操作(已更新):

        private string getVideo(Guid? FileId, string culture)
    {
        if (null == FileId || !FileId.HasValue)
        {
            return null;
        }

        string videoCulture = (culture.ToLower() == "en-us" ? "" : "." + culture);

        string model = null;
        using (InRollPlus.API.Repositories.FileRepository fir = new FileRepository())
        {
            //model = fir.Get(FileId.Value);
            //model.Location = String.Format(@"{0}/{1}/{2}/video{3}{4}", InRollPlus.Shared.ConstantVals.ConstantItem.AWS_ENVIRONMENT, Shared.Utils.AWSHelpers.AS3.S3Folder.video, benefitTypeId, videoCulture, model.FileNameExtension);
        }
        return (model);
    }

    private IEnumerable<dynamic> GetVideoIdByController(string controllerName, string videoCulture)
    {
        var VideoService = new AppServices.Video.GetVideoById();
        IEnumerable<dynamic> videoFileId = VideoService.Execute(controllerName);
        return (videoFileId);
    }

    public string GetControllerVideo(Guid id, string videoCulture)
    {
        var controllerName = this.GetType().ToString();
        dynamic LookupData = GetVideoIdByController(controllerName, videoCulture);
        Guid? FileItemId = LookupData.ItemId;
        return (getVideo(FileItemId, videoCulture));
    }

当我在GetControllerVideo上设置断点并进行调试时,没有任何反应。它似乎从未击中过控制器。我做错了什么?

2 个答案:

答案 0 :(得分:0)

itemId更改为id并传递videoCulture,因为您的操作需要2个名为idvideoCulture的参数

$('#clicker').click(function () {
    $.ajax({
        type: 'GET',
        dataType: 'text',
        url: '@Url.Action("GetControllerVideo", "Login")',
        data: { Id: "FileItemId", videoCulture: "SomethingHere" },
        success: function (ItemId) {
            alert(ItemId)
        }
    });
});

答案 1 :(得分:0)

显然,我的应用程序不允许对控制器进行未经身份验证的请求,因此当我点击该控制器时,它只会发送一个返回重定向并给我一个200 ok的状态。我将不得不以不同的方式做事。