2017-03-15 1 views
0

J'ai un datatable et pour chaque rangée il y a un bouton. Lorsque cliqué, il devrait définir une propriété (champ AvailableToCall) dans ma classe. Donc j'appelle un Ajax pour ma méthode de mise à jour en passant la valeur (true) de la propriété. Le problème est que lorsque je fais cela, toutes les autres propriétés (par exemple, nom, adresse, etc.) sont définies sur null. Est-il possible de mettre à jour uniquement une propriété spécifique en laissant toutes les autres propriétés de ma table les mêmes qu'avant l'appel AJAX?ASP .NET API Ajax Comment mettre à jour seulement certaines propriétés?

$.ajax({ 
    url: "/api/person/" + personId, 
    type: "put", 
    data: { 
     AvailableToCall: true 
    } 
}).done(function() { 
    // something 
} 

Merci pour l'aide.

+0

Vous n'avez pas montré la méthode de votre contrôleur! (vous obtenez l'objet de la base de données basé sur 'personId' et mettez à jour sa propriété' AvailableToCall', puis enregistrez-la. –

Répondre

0

Une autre façon que vous pourriez y parvenir est un critère différent:

$.ajax({ 
    url: "/api/person/" + personId + "/availabletocall", 
    type: "put", 
    data: true 
}).done(function() { 
    // something 
} 

Ainsi, votre URL est quelque chose comme ci-dessous qui accepte un corps avec un booléen:

/api/person/123/availabletocall

Votre action de contrôleur peut simplement recevoir cette valeur unique et mettre à jour la source de données que vous utilisez.

0

Tout d'abord, vous devez afficher votre méthode ApiController.

Je suppose que votre méthode est comme ça,

public HttpResponseMessage Put(int id) 
{ 
    var _AvailableToCall = HttpContext.Current.Request.Form["AvailableToCall"]; 
    //I'm using HttpContext to fetch the data in the above line. You can fetch 
    //the bool value as your way 
    //Now you just need to fetch the data by personId, (here it is id). 
    myClass obj = contextObj.myClass().where(m=>m.personId == 
       id).firstOrDefault(); 
    obj.AvailableToCall = true; 
    //That's it. Now you can update it. 
    contextObj.Entry(obj).State = System.Data.Entity.EntityState.Modified; 
    contextObj.SaveChanges(); 
    return Request.CreateResponse(HttpStatusCode.OK, new { Status = "OK", 
     Message = e.ToString() }); 
    //You can return your data as your requirements or as you are writing in 
    //your project. 
    } 

Voir ici « contextObj » est l'objet de ma classe de contexte. Et "myClass" est ma classe modale que je veux mettre à jour/enregistrer des données.

Vous pouvez écrire le type de retour "Json" à la place de "HttpResponseMessage". ... Vive