如何使用jquery $ .ajax()从视图发送模型

时间:2012-11-19 06:58:16

标签: .net asp.net-mvc-3 jquery model

我正在开展一个项目,我需要对控件进行内联编辑。我想使用视图编辑模型的属性,然后想使用jquery ajax将其发送到控制器。如何使用$ .ajax()

将完整模型发送到控制器

我的模特是:

  public class LeadDetail
  {
    public int EntityID { get; set; }
    public string EntityName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public int PhoneType { get; set; }
    public string PhoneNumber { get; set; }
    public string PhoneExt { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public string City { get; set; }
    public int State { get; set; }
    public string ZipCode { get; set; }
    public string Country { get; set; }
    public decimal Amount { get; set; }
    public string LeadAssignedToName { get; set; }
    public int RelatedAccount { get; set; }
    public string LeadStatusName { get; set; }
    public string LeadRatingName { get; set; }
    public string LeadSourceName { get; set; }
    public string CampaignName { get; set; }
    public int LeadType { get; set; }
    public string Url { get; set; }
    public string Comments { get; set; }
    public int Subscribed { get; set; }
    public string CreatedDate { get; set; }
    public string CreatedBy { get; set; }
    public string utm_source { get; set; }
    public string utm_term { get; set; }
    public string IPAddress { get; set; }
    public string utm_medium { get; set; }
    public string utm_campaign { get; set; }
    public string utm_content { get; set; }
    public int RelatedAccountId { get; set; }
    public int LeadTypeID { get; set; }
    public int CampaignID { get; set; }
    public string BirthDate { get; set; }
    public string SocialSecurity { get; set; }
    public string emailsubscriber { get; set; }
    public string active { get; set; }
    public int department { get; set; }
    public int Title { get; set; }
    public int PrimaryEmail { get; set; }
    public int PrimaryPhone { get; set; }
    public int PrimaryAddress { get; set; }
    public string LeadAssignedDate { get; set; }
    public int LeadRatingID { get; set; }
    public int LeadStatusID { get; set; }
    public int AccountType { get; set; }
    public int EntityTypeID { get; set; }
    public int LeadAssignedTo { get; set; }
    public int AccountStatusID { get; set; }
    public int LeadSourceID { get; set; }
    public string PrimaryContact { get; set; }
    public string stateName { get; set; }
}

我在控制器上有一个方法:

[HttpPost]
    public void updateDetail(LeadDetail Lead)
    {
        LeadDetail leadvalue = Lead;
    }

我想以正确的方式将完整模型发送到控制器

    $.ajax({
            url: '/Test/updateDetail',
            type: 'POST',
            data: {
                 Lead:'@Model'
            },

我在这个ajax发布后的方法updateDetail中得到null如何改进它

3 个答案:

答案 0 :(得分:1)

Lead:'@Model'

这是服务器代码,它仅适用于* .cshtml文件,如果查看渲染的html标记,则只能找到对象名称。

试试这个:

    var form = $('#your_form');
    form.submit(function (e) {
        e.preventDefault();
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (data ){

            }
        });
    });

答案 1 :(得分:0)

因为你的实体成员都是简单类型(int - string - decimal),你可以循环遍历表单元素并创建一个json对象。

    var rawData = "{";
    var fieldCount = $("input , textarea , select ",$(".yourform")).length;
    $("input , textarea , select ", $(".yourform")).each(function (index) {
        if ($(this).attr("value") == undefined || $(this).attr("name") == undefined) {               
            return;
        }
        rawData += '"' + $(this).attr("name") + '" : "' + $(this).attr("value") + '"';
        if (index < fieldCount - 1)
            rawData += ",";
    });

    rawData += "}";

    var dataToSend = $.parseJSON(rawData);

然后你可以随身携带&#; r $ .ajax:

 $.ajax({
        url: '/Test/updateDetail',
        type: 'POST',
        data: dataToSend 
       });

答案 2 :(得分:0)

                $('#form').submit(function () {
                    $.ajax({
                        url: url
                        type: 'POST',
                        data: $(this).serialize(), // 'this' is your form or use form id
                        success: function (result) {
                        //your action after submit
                        }
                    });                    
                });