0

I am working on a project where i need inline editing for controls. and i want to edit model's properties using view and then want to send it to controller using jquery ajax. how can i send full model to controller using $.ajax()

My model is:

  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; }
}

and i have a method on controller:

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

I want correct way to send full model to controller

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

i get null in the method updateDetail after this ajax post how to improve it

3 Answers 3

1
Lead:'@Model'

This is server code and it works only in *.cshtml files, if you look at rendered html markup you will find only object name.

Try this:

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

            }
        });
    });
Sign up to request clarification or add additional context in comments.

1 Comment

Hi... Can u please tell me how to send serialize class object and int value to controller using ajax ?
0

as your entity members all are simple types(int - string - decimal) you can loop through your form elements and crate a json object.

    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);

then you can send it with you'r $.ajax:

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

Comments

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
                        }
                    });                    
                });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.