通过Jquery ajax将模型从视图传递到vontroller

时间:2016-01-27 17:07:49

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

我正在尝试将Json数据从视图传递到控制器但由于某种原因它不想工作。当我调试控制器时,我的模型显示为null,对于我的生活,我无法弄清楚为什么。

这是我的控制器:

        public JsonResult UpdateVideoUrl(List<GetUrlData> model)
    {
        //var UpdateUrls = new AppServices.Video.UpdateAllVideo();
        //var loginVideoUrl = model.ToString();
        //dynamic update = UpdateUrls.Execute(model);
        return Json(model);
    }

我的观点:

    $('#btnUpdate').click(function (e) {
    //debugger;
    var model = {
        'Model.LoginFiles.EnglishVideoURL': $("#LoginEnVideoInput").val(),
        'Model.LoginFiles.SpanishVideoURL': $("#LoginEsVideoInput").val(),
        'Model.WelcomeFiles.EnglishVideoURL': $("#WelcomeEnVideoInput").val(),
        'Model.WelcomeFiles.SpanishVideoURL': $("#WelcomeEsVideoInput").val(),
        'Model.BenefitFiles.EnglishVideoURL': $("#BenefitEnVideoInput").val(),
        'Model.BenefitFiles.EnglishVideoURL': $("#BenefitEsVideoInput").val(),
        'Model.MyEnrollmentFiles.EnglishVideoURL': $("#MyEnrollmentEnVideoInput").val(),
        'Model.MyEnrollmentFiles.EnglishVideoURL': $("#MyEnrollmentEsVideoInput").val(),
        'Model.AdminSideFiles.EnglishVideoURL': $("#AdminSideEnVideoInput").val(),
        'Model.AdminSideFiles.EnglishVideoURL': $("#AdminSideEsVideoInput").val()
    }
    $.ajax({
        type: "POST",
        url: '@Url.Action("UpdateVideoUrl", "ManageVideos")',
        data: JSON.stringify(model),
        contentType: 'application/json; charset=utf-8',
        //async: true,
        success: function (model) {
            //Return the model
        },
        error: function (jqXHR, errorThrown, errorThrown) {
            console.log("there was an error on post: " + " " + errorThrown + "." + "  Please see above if applicable");
        }
    });
});

我的模特:

    public class ApplicationVideoModel
{
    public List<GetUrlData> GetUrlData { get; set; }
}

public class GetUrlData
{
    public GetUrlData(string englishurl, string spanishurl)
    {
        EnglishVideoUrl = englishurl;
        SpanishVideoUrl = spanishurl;
    }
    public string EnglishVideoUrl
    {
        get;
        set;
    }
    public string SpanishVideoUrl
    {
        get;
        set;
    }
}

我在这里俯瞰什么?

1 个答案:

答案 0 :(得分:0)

模型为空,因为您转换一个对象而不是对象列表

如果您将post方法中的参数更改为:

public JsonResult UpdateVideoUrl(GetUrlData model)
{
    return Json(model);
}

然后模型不会为空。

如果你需要发送List作为参数,那么你必须按字母顺序化对象数组:

var model = [{
    'Model.LoginFiles.EnglishVideoURL': $("#LoginEnVideoInput").val(),
    next properties
            },
            {
    second object
            }]