Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ASP.NET MVC4Öе÷ÓÃWEB APIµÄËĸö·½·¨
 
  3848  次浏览      27
 2018-5-10 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬Ö÷Òª½éÉÜÁËASP.NET MVC 4ÖÐÐÂÍÆ³öµÄ·ûºÏREST¼Ü¹¹µÄWEB API,²¢ÒÔʵ¼ÊÀý×Ó½²½âÁËÈçºÎͨ¹ý²»Í¬µÄ·½Ê½µ÷ÓÃweb api·µ»ØµÄ½á¹û¡£

µ±½ñµÄÈí¼þ¿ª·¢ÖУ¬Éè¼ÆÈí¼þµÄ·þÎñ²¢½«Æäͨ¹ýÍøÂç¶ÔÍâ·¢²¼£¬Èø÷ÖÖ¿Í»§¶ËȥʹÓ÷þÎñÒѾ­ÊÇÊ®·ÖÆÕ±éµÄ×ö·¨¡£¾Í.NET¶øÑÔ£¬Ä¿Ç°ÌṩÁËRemoting,WebServiceºÍWCF·þÎñ£¬Õâ¶¼ÄÜ¿ª·¢³ö¹¦ÄÜÊ®·ÖÇ¿´óµÄ·þÎñ¡£È»¶ø£¬Ô½À´Ô½¶àµÄ»¥ÁªÍøÓ¦Óã¬Ï£Íû½«·þÎñÖ»ÊÇͨ¹ýHTTP·¢²¼³öÈ¥£¬¶ø²»ÊÇʹÓø´ÔÓµÄSOAPЭÒ顣ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ASP.NET WebAPI¾Í³öÏÖÁË¡£

ASP.NET API¼òµ¥À´Ëµ¾ÍÊǶÔRESTЭÒé½øÐÐÁ˳ä·ÖµÄÖ§³Ö£¬¿ÉÒÔʹÓÃHTTPÖеÄGET,POST,PUTºÍDELETE½øÐзþÎñµÄ·¢²¼¡£ÔÚ±¾ÎÄÖУ¬½«ÒÔÀý×Ó˵Ã÷ÈçºÎʹÓÃASP.NET WEB APIÈ¥´´½¨Ò»¸öREST·ç¸ñµÄWeb·þÎñ£¬²¢ÇÒÈçºÎ±àд¿Í»§¶Ë¶ÔÆä½øÐÐÁ¬½Ó£¬´ËÍâÔÚÎÄÖл¹½«Ñ§»áÈçºÎͨ¹ýHTTPЭÒ飬ʹÓÃEntity FrameworkºÍSQL ServerÈ¥´´½¨Ò»¸öCRUD(Ôöɾ¸Ä)µÄÓ¦ÓóÌÐò¡£±¾ÎĵÄÔĶÁ¶ÔÏóΪ¾ß±¸Ò»¶¨ASP.NET MVC»ù´¡µÄÓû§¡£

ǰÆÚ×¼±¸

ΪÁ˼ÌÐø±¾ÎĵÄѧϰ£¬Ê×ÏÈÐèÒª°²×°ASP.NET MVC4ºÍJSON.net,ASP.NET Web APIÊÇASP.NET MVC 4 BETA°æµÄÒ»²¿·Ö£¬¿ÉÒÔ´ÓÏÂÃæÕâ¸öµØÖ·ÏÂÔØµÃµ½£ºhttp://www.asp.net/mvc/mvc4¡£

´ËÍ⣬»¹ÐèÒªÏÂÔØJson.NET,ËüÊÇÒ»¸öÔÚ.NETÖиßÐÔÄܵĶÔJSON½øÐнâÎö´¦ÀíµÄÀà¿â£¬ÏÂÔØµØÖ·ÔÚ£ºhttp://json.codeplex.com/releases/view/82120, ÔÚ±¾ÎĵÄѧϰÖУ¬½«»áÓõ½Json.net¡£

´´½¨ASP.NET MVC4 WEB APIÓ¦ÓÃ

ÏÂÃæ£¬Ê×ÏÈ´ò¿ªVS.NET 2010,È»ºó½¨Á¢Ò»¸öеÄÏîÄ¿£¬Ñ¡ÔñʹÓÃC#ÓïÑÔ£¬È»ºóÑ¡ÔñASP.NET MVC4 WEB APPLICATION,ÔÙÑ¡ÔñʹÓÃWeb API Ä£°å£¬ÈçÏÂÁ½¸öͼËùʾ£º

ÔÚ½¨Á¢ºÃ¹¤³ÌÏîÄ¿ºó£¬»á·¢ÏÖÏîÄ¿µÄĿ¼½á¹¹¸úÆÕͨµÄMVC½á¹¹ÊDz¶àµÄ£¬µ«ÆäÖлᷢÏÖÔÚControllerÎļþ¼ÐÖУ¬»á·¢ÏÖ¶àÒ»¸öValuesControllerµÄÀàÎļþ£¬Õâ¸öÀàÊÇWeb APIµÄ¿ØÖÆÆ÷À࣬Ëü¼Ì³ÐÁËApiControllerÀ࣬¶ø²»ÊÇÒ»°ãMVC¿ò¼ÜÖеÄControllerÀ࣬´úÂëÈçÏ£º

public class ValuesController : ApiController
{
...
}

ValuesControllerÀà»á×Ô¶¯Éú³ÉÒ»¸ö»ùÓÚREST·ç¸ñµÄ½ÅÊּܣ¬ÒÔ·½±ãÓû§½øÐбàÂ룬ÆäÖÐÌṩÁËGET,POST,PUTºÍDELETE·½·¨¡£ÏÂÃæµÄ±í¸ñÏêϸÁгöÁËÿ¸öHTTP·½·¨µÄº¬Ò壺

ҪעÒâµÄÊÇ£¬Wep API ±¾Éí²»»áÖ¸¶¨ÒÔÉÏÕâЩ·½·¨ÖÐÿ¸ö·½·¨µÄ¾ßÌå´¦ÀíÁ÷³Ì£¬±ÈÈ磬¶ÔÓÚ·þÎñ¶ËµÄÎļþϵͳ£¬¿ÉÒÔʹÓÃXMLÊý¾Ý»òÕß×Ô¶¨ÒåÊý¾Ý´æ´¢¸ñʽ£¬´Ó¶øÔÚÕâЩ·½·¨ÖÐʹÓã¬Ö÷ÒªÊǸù¾ÝÄ¿±êµÄ²Ù×÷ÀàÐͺÍÊý¾ÝµÄ´æ´¢ÐÎʽ£¬ÒÔÉÏÕâЩ·½·¨¿ÉÒÔ½ÓÊÕËùÐèÒªµÄÊý¾ÝÀàÐÍ¡£

ÔÚÎÒÃǼÌÐø²Ù×÷ǰ£¬ÏÈÔÚÏîÄ¿µÄ¸ùĿ¼Ï´´½¨Ò»¸öеÄÃûΪAPIµÄÎļþ¼Ð£¬²¢ÇÒ½«ValuesController.csÕâ¸öÎļþ·Åµ½ÆäÖУ¬ÕâÑù×öµÄÄ¿µÄ£¬Ö÷ÒªÊÇΪÁ˽«Web API¿ØÖÆÆ÷¸úÆÕͨµÄMVC¿ØÖÆÆ÷½øÐзÖÀ룬·½±ã½ñºóµÄ¿ª·¢¡£

ÀûÓÃEntity Framework´´½¨Êý¾Ý²ã

ÏÖÔÚ£¬ÍùModelsÎļþ¼ÐÖУ¬ÐÂÔöÒ»¸öEntity FrameworkÊý¾ÝʵÌå¡£ÎÒÃÇʹÓõÄÊÇNorthwindÊý¾Ý¿âÖеÄCustomers±í½øÐвÙ×÷£¬ÃüÃûÊý¾ÝʵÌåΪNorthwind,ÈçÏÂͼ£º

Ö®ºó£¬Ñ¡Ôñcustomer±í£¬´´½¨Ò»¸öÊý¾ÝʵÌåcustomerÈçÏ£º

Web API¿ØÖÆÆ÷µÄ±àÂë

½ÓÏÂÀ´£¬ÎÒÃǶÔÒѾ­Éú³ÉÁË¿ò¼ÜµÄWeb¿ØÖÆÆ÷½øÐÐÍêÉÆÆäÖеĴúÂ룬´úÂëÈçÏ£º

public class CustomersController : ApiController
{
//Select All
public IEnumerable Get ()
{
NorthwindEntities db = new NorthwindEntities ();
var data = from item in db.Customers
orderby item.CustomerID
select item;
return data.ToList ();
}
//Select By Id
public Customer Get(string id)
{
NorthwindEntities db = new NorthwindEntities();
var data = from item in db.Customers
where item.CustomerID == id
select item;
return data.SingleOrDefault();
}
//Insert
public void Post(Customer obj)
{
NorthwindEntities db = new NorthwindEntities ();
db.Customers.AddObject(obj);
db.SaveChanges();
}
//Update
public void Put (string id, Customer obj)
{
NorthwindEntities db = new NorthwindEntities ();
var data = from item in db.Customers
where item.CustomerID == id
select item;
Customer old = data.SingleOrDefault();
old.CompanyName = obj.CompanyName;
old.ContactName = obj.ContactName;
old.Country = obj.Country;
db.SaveChanges ();
}
// Delete
public void Delete(string id)
{
NorthwindEntities db = new NorthwindEntities();
var data = from item in db.Customers
where item.CustomerID == id
select item;
Customer obj = data.SingleOrDefault();
db.Customers .DeleteObject(obj);
db.SaveChanges();
}
}

ÆäÖУ¬Get()·½·¨·µ»ØÁËCustomers±íÖеÄËùÓÐÊý¾Ý£¬ÊÇÒÔLISTÁбíµÄÐÎʽ·µ»ØµÄ¡£customer±íÖеÄÖ÷¼üΪCustomerIdÁУ¬²¢ÇÒÊÇ×Ö·û´®ÀàÐÍ£¬Òò´Ë£¬ÁíÍâµÄÒ»¸öget´ø²ÎÊýµÄ·½·¨£¬ÊǸù¾Ý´«ÈëµÄID²ÎÊý·µ»ØÁËijһ¸öcustomerµÄ¶ÔÏóʵÀý¡£

Post()·½·¨Ôò½ÓÊÕÒ»¸öCustomer¶ÔÏó×÷Ϊ²ÎÊý£¬²¢ÇÒ½«ÆäÐÂÔöµ½Êý¾Ý±íÖÐÈ¥£¬Í¬Ñù£¬Put()·½·¨ÖУ¬½ÓÊÕÒ»¸öcustomerid£¬È»ºóÔÚÊý¾Ý±íÖÐÕÒ³ö¸Ãcustomer¶ÔÏó£¬Îª¸Ãcustomer¶ÔÏóµÄÊôÐÔÖØÐ¸³Öµ£¬È»ºóÔÙ±£´æ;×îºóDelete·½·¨¸ù¾Ý´«ÈëµÄCustomerID²ÎÊýɾ³ýÊý¾Ý±íÖеÄÊý¾Ý²¢±£´æ¡£

´Óä¯ÀÀÆ÷ÖзÃÎÊWEB API

ÔÚͨ¹ýÆÕÍ¨Ò³Ãæ×÷Ϊ¿Í»§¶Ë·ÃÎÊWeb APIǰ£¬Ê×ÏÈÔÚä¯ÀÀÆ÷ÖÐͨ¹ýÊäÈëµØÖ·µÄ·½·¨ÏȲâÊÔһϣ¬ÈçÏÂͼ£º

×¢ÒâµÄÊÇ£¬·ÃÎÊAPIµÄ·½Ê½Îª£ºlocalhost/api/customers£¬ÔÚʵ¼ÊÖн«Òª¸ù¾ÝÇé¿öÌæ»»ºÏÊʵĶ˿ڣ¬Ä¬ÈÏËùÓеÄWEB API¶¼ÊÇͨ¹ý/api¸ùĿ¼µÄ·½Ê½·ÃÎʵģ¬¸Ã·ÓÉÊÇÔÚGlobal.asaxϽøÐж¨Ò壬ÈçÏ£º

Hello World!public static void RegisterRoutes ( Route Collection routes )
{
...
routes . MapHttpRoute (
name : "DefaultApi" ,
routeTemplate: "api /{controller}/ {id}",
defaults : new { id = RouteParameter.Optional }
);
...
}

Òò´Ë£¬ÏÖÔÚÓÉÓÚÎÒÃǵÄWEB API¿ØÖÆÆ÷ÊÇcustomers,Òò´ËÈçºÎÒªµÃµ½Ä³¸ö¹Ë¿ÍµÄÐÅÏ¢£¬¿ÉÒÔÈçϵķ½Ê½·ÃÎÊ£º

/api/customers/ALFKI

´´½¨×Ô¶¨ÒåJSON¸ñʽ»¯Æ÷

ÔÚͨ¹ýä¯ÀÀÆ÷È¥·ÃÎÊWEB APIʱ£¬Ä¬ÈϵÄÏÔʾ·½Ê½ÊÇXML¡£Web API¿ò¼Ü»á×Ô¶¯¸ù¾Ý·ÃÎʿͻ§¶ËµÄ²»Í¬´Ó¶ø·µ»Ø²»Í¬µÄ¸ñʽµÄÊý¾Ý¡£ÏÖÔÚ£¬´ó¶àÊýÇé¿öÏ£¬Óû§Ï£Íû·µ»ØµÄ¸ñʽÊý¾ÝÊÇJSONÐÎʽ¡£È»¶ø£¬ÔÚ±¾ÎÄд×÷ʱ£¬Ê¹ÓÃĬÈϵÄWeb APIÌṩµÄJSON¸ñʽ»¯´¦ÀíÆ÷ÒÔ¼°Entity Framework´îÅ乤×÷ʱ£¬»á³öÏÖһЩСBUG.The entities of the EF data model have IsReference property of DataContractAttribute set to True.EF EFÊý¾ÝÄ£Ð͵ÄʵÌ彫DataContractAttributeÖеÄIsReferenceÊôÐÔÉèÖÃΪtrue£¬ÈçÏ£º

...
[ Serializable() ]
[ DataContractAttribute (IsReference=true) ]
public partial class Customer : EntityObject
{
...
}

ĬÈÏÇé¿öÏÂ,Web APIʹÓõÄÊÇDataContractJsonSerializerÀà½øÐÐJSONÐòÁл¯¡£µ«Ä¬ÈϵÄJSONÐòÁл¯À಻ÄÜ´¦ÀíÕâÑùµÄʵÌåÀ࣬²¢ÇÒÔÚÔËÐÐÆÚ¼äÅ׳öÈçÏÂÒì³££º

The type 'WebAPIDemo.Models.Customer' cannot be serialized to JSON because its IsReference setting is 'True'. The JSON format does not support references because there is no standardized format for representing references. To enable serialization, disable the IsReference setting on the type or an appropriate parent class of the type.

ΪÁ˿˷þÔò¸öÎÊÌ⣬¿ÉÒÔ´´½¨Ò»¸ö×Ô¶¨ÒåµÄJSON¸ñʽ»¯Æ÷¡£ÐÒÔ˵ÄÊÇ£¬ÓеÚÈý·½µÄJSONÐòÁл¯Æ÷¸øÎÒÃÇÑ¡ÔñʹÓ㬱ÈÈçJson.NET¡£ÔÚ±¾ÎÄÖУ¬½«»á¼òµ¥½éÉÜʹÓÃJSON.NETÈ¥Íê³ÉÐòÁл¯£¬ÍêÕûµÄ´úÂë¿ÉÒÔÔÚ¸½¼þÖÐÏÂÔØ¡£

Ò»¸ö×Ô¶¨ÒåµÄÐòÁл¯Æ÷Ö÷ÒªÊǼ̳ÐÁËMediaTypeFormatterµÄ»ùÀà¡£ÎÒÃDZàдµÄÕâ¸öJSONÐòÁл¯ÀàΪJsonNetFormatter£¬ÔÚʹÓÃǰҪȷÈÏÄãµÄÓ¦Óù¤³ÌÖÐÒѾ­ÒýÓÃÁËJson.NETµÄÀà¿â£¬ÈçÏÂͼ£º

ÏÂÃæÎÒÃÇÀ´¿´ÏÂJsonNetFormatterµÄ»ù´¡´úÂ룺

public class JsonNetFormatter : MediaTypeFormatter
{
...
}
¿ÉÒÔͨ¹ýÖØÐ´MediaTypeFormatter ÖеÄһЩ·½·¨ÈçÏ£º
protected override bool CanReadType (Type type)
{
...
}
protected override bool CanWriteType (Type type)
{
...
}
protected override Task <object> OnReadFromStreamAsync (Type type, Stream stream,

HttpContentHeaders contentHeaders,

FormatterContext formatterContext )
{
...
}
protected override Task OnWriteToStreamAsync (Type type, object value, Stream stream,
HttpContentHeaders contentHeaders,
FormatterContext formatterContext,
TransportContext transportContext )
{
...
}

¾ßÌåµÄ´úÂëÔÚ¸½¼þÖпÉÒÔÏêϸ²é¿´¡£Ò»µ©´´½¨ÁËJSONÐòÁл¯Æ÷ºó£¬¾ÍÐèÒª¸æËßWeb API¿ò¼ÜÈ¥Ìæ»»Ê¹ÓÃÔ­ÏÈĬÈϵÄJSONÐòÁл¯¿ò¼Ü¡£¿ÉÒÔÔÚglobal.asxÖÐʵÏÖ£º

protected void Application_Start ()
{
HttpConfiguration config = Global Configuration . Configuration ;
JsonSerializerSettings settings = new Json Serializer Settings ();
settings .Converters.Add (new IsoDateTimeConverter());
JsonNetFormatter formatter = new WebAPIDemo. Http .Formatters . JsonNetFormatter ( settings );
config .Formatters.Inser t( 0, formatter );
AreaRegistration.RegisterAllAreas ();
RegisterGlobalFilters (GlobalFilters.Filters);
RegisterRoutes (RouteTable.Routes);
BundleTable.Bundles .RegisterTemplateBundles ();
}

ÆäÖÐÇë×¢Òâ´ÖÌå×Ö²¿·Ö£¬ÕâÀï´´½¨ÁËJSON×Ô¶¨ÒåÆ÷µÄʵÀý£¬²¢ÇÒÔö¼Óµ½ÒÔHttpConfigurationÀàµÄÅäÖÆµÄÐòÁл¯ÅäÖÆ¼¯ºÏÖС£

ÕâÑù£¬ÎÒÃǾͿÉÒÔ¿ªÊ¼ÔÚ¿Í»§¶ËÖе÷ÓÃWEB API£¬²¢Ê¹ÓÃ×Ô¶¨ÒåµÄJSON½âÎöÆ÷½øÐд¦Àí¡£

ʹÓÃjQuery µ÷ÓÃWEB API

½ÓÏÂÀ´£¬ÎÒÃÇÔÚIndex¿ØÖÆÆ÷ÖÐн¨Á¢Ò»¸öÊÓͼ£¬ÈçÏÂͼ£º

½ÓÏÂÀ´¾Í¿ÉÒÔ¸ù¾Ýʵ¼ÊÐèÒª£¬¾ö¶¨ÔÚÒ³ÃæÖÐÏÔʾcustomer±íÖеĶàÉÙÁУ¬×îºóµÄÒ³ÃæÏÔʾÈçÏ£º

µ±Ò³Ãæ¼ÓÔØÊ±£¬Ê¹ÓÃGET()·½·¨È¥µ÷³öcustomer±íµÄËùÓÐÊý¾Ý£¬¶øµ±Ê¹ÓÃINSERT,UPDATE,DELETE¹¦ÄÜʱ£¬ÊÇͨ¹ýjQueryÈ¥µ÷ÓÃweb apiµÄ¡£ÏÂÃæÎÒÃÇѧϰÏÂͨ¹ýjQueryÈ¥µ÷ÓÃWEB API¡£

Ê×ÏÈ£¬ÎÒÃÇÉè¼ÆÃ¿Ò»ÐеÄHTML´úÂ룬ÈçÏ£º

<table id = "customerTable" border = "0" cellpadding = "3" >
<tr>
<th> Customer ID </th>
<th> Company Name </th>
<th> Contact Name </th>
<th> Country </th>
<th> Actions </th>
</tr>
<tr>
<td> <input type="text" id="txtCustomerId" size ="5" /> </td>
<td> <input type="text" id="txtCompanyName" /></td>
<td> <input type="text" id="txtContactName" /></td>
<td> <input type="text" id="txtCountry" /> </td>
<td> <input type="button" name="btnInsert" value =" Insert " /></td>
</tr>
</table>

Ê×ÏÈÒªÒýÈëjQueryÀà¿â£º

<script src="../../ Scripts /jquery-1.6.2.min.js" type = "text /javascript"> </script>

È»ºóÔÚjQueryÖУ¬Í¨¹ý$.getJSONµÄ·½·¨£¬µ÷ÓÃWEB API£¬´úÂëÈçÏ£º

$(document).ready(function () { ¡¡¡¡$.getJSON("api/customers", LoadCustomers);
});

ÊìϤjQueryµÄÅóÓѿ϶¨Ã÷°×£¬$.getJson·½·¨ÖеÚÒ»¸ö²ÎÊýÊǵ÷Ó÷þÎñµÄµØÖ·£¬µÚ¶þ¸ö²ÎÊýÊǻص÷·½·¨£¬Õâ¸ö»Øµ÷·½·¨LoadCustomersÖУ¬½«Õ¹Ê¾·þÎñ¶Ëweb api·µ»ØµÄÊý¾Ý£¬´úÂëÈçÏ£º

function LoadCustomers (data) {
$("#customerTable") .find( "tr:gt(1)" ).remove();
$.each (data, function (key, val) {
var tableRow = '<tr>' +
'<td>' + val. CustomerID + '</td>' +
'<td><input type= "text" value="' + val. CompanyName + '"/></td>' +
'<td><input type ="text" value="' + val.ContactName + '"/></td>' +
'<td><input type ="text" value="' + val.Country + '"/></td>' +
'<td><input type ="button" name="btnUpdate" value="Update" />
<input type="button" name ="btnDelete" value="Delete" /></td>'+
'</tr>';
$('#customerTable').append (tableRow);
});

$("input[name='btnInsert']" ).click(OnInsert);
$("input[name='btnUpdate']" ).click(OnUpdate);
$("input[name='btnDelete']" ).click(OnDelete);
}

ÔÚÉÏÃæµÄ´úÂëÖУ¬Ê×ÏÈÒÆ³ýËùÓбí¸ñÖеÄÐÐ(³ýÁ˱íÍ·Íâ)£¬È»ºóͨ¹ýjQueryÖеÄeach·½·¨£¬±éÀúweb api·µ»Ø¸øÇ°¶ËµÄÊý¾Ý£¬×îºóÕ¹ÏÖËùÓеÄÊý¾ÝÐС£È»ºóÔÚInsert,update,deleteÈý¸ö°´Å¥Öж¼°ó¶¨ÁËÏà¹ØµÄ·½·¨º¯Êý£¬ÏÂÃæÏÈ¿´updateµÄ´úÂ룺

function OnUpdate(evt) {
var cell;
var customerId = $(this) .parent ().parent() .children ( ).get (0). innerHTML;
cell = $(this).parent().parent().children().get (1);
var companyName = $(cell).find('input').val();
cell = $(this).parent().parent().children().get (2);
var contactName = $(cell).find('input').val();
cell = $(this).parent().parent().children().get (3);
var country = $(cell).find('input').val ();
var data = '{"id":"' + customerId + '", "obj": {" Customer ID ": "' + customerId +
'", " CompanyName":"' + companyName + '"," ContactName ":"' +
contactName + '","Country":"' + country + '"}}';
$.ajax({
type: 'PUT',
url: '/api/customers /',
data: data,
contentType: "application /json; charset=utf-8",
dataType : 'json',
success: function (results) {
$.getJSON ("api/customers", LoadCustomers);
alert ('Customer Updated !');
}
})
}

ÔÚÉÏÃæµÄ´úÂëÖУ¬Ê×ÏÈ´ÓÿÐеĸ÷¸öÎı¾¿òÖлñµÃÒª¸üеÄÖµ£¬È»ºó×éÖ¯³ÉJSONÊý¾Ý£¬

ÆäÊý¾Ý¸ñʽΪ°üº¬Á½ÏÆäÖÐÒ»Ïî°üº¬customerµÄID,ÁíÍâÒ»¸öÊÇеÄcustomerʵÌå¶ÔÏó£¬ÒòΪWEB APIµÄPUT·½·¨ÐèÒªµÄÊÇÁ½¸ö²ÎÊý¡£

È»ºóͨ¹ýjQueryµÄ$.ajax·½·¨½øÐе÷ÓÃweb api£¬×¢ÒâÕâÀïµÄtypeÖ¸¶¨Îªput·½·¨£¬²¢ÇÒ×¢Òâ±àÂëΪUTF-8£¬È»ºóÔڻص÷·½·¨successÖУ¬ÔÙ´ËʹÓÃ$.getJSON·½·¨£¬»ñµÃ¸üкóµÄ×îÐÂÓû§ÁÐ±í¡£

¶øInsert£¬DeleteµÄ·½·¨´úÂëÈçÏ£º

function OnInsert(evt) {
var customerId = $ ("#txtCustomerId") .val();
var companyName = $("#txtCompanyName") .val();
var contactName = $("#txtContactName") .val();
var country = $("#txtCountry").val ();
var data = '{"obj":{ "CustomerID":"' + customerId + '", " CompanyName":"' + companyName +
'"," ContactName":"' + contactName + '","Country":"' + country + '"}}';
$.ajax({
type: 'POST',
url: '/api/customers/',
data: data,
contentType : "application/json; charset=utf-8",
dataType : 'json',
success: function (results) {
$ ("#txtCustomerId").val('');
$ ("#txtCompanyName").val('');
$ ("#txtContactName").val('');
$ ("#txtCountry").val('');
$.getJSON ("api/customers", LoadCustomers);
alert ('Customer Added !');
}
})
}
function OnDelete (evt) {
var customerId = $(this). parent(). parent(). children () . get(0) .innerHTML;
var data = '{"id":"' + customerId + '"}';
var row = $(this).parent().parent();
$.ajax ({
type: 'DELETE',
url: '/api /customers/',
data: data ,
contentType : "application/json; charset=utf-8",
dataType : 'json',
success: function (results) {
$.getJSON ("api/customers", LoadCustomers);
alert ('Customer Deleted!');
}
})
}

¶ÁÕßҪעÒâµÄÊÇ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬¿ÉÒÔʹÓú¬ÓÐGET,PUT,DELETEǰ׺µÄ·½·¨Ãû£¬±ÈÈç

GetXXXX(), PutXXXX(), PostXXXX()¶¼ÊÇ¿ÉÒԵģ¬XXXÊÇ×Ô¶¨ÒåµÄÃû³Æ£¬WEB API¿ò¼ÜÒÀÈ»»áµ÷ÓöÔÓ¦µÄGET,PUTºÍPOST·½·¨¡£

×îºóÔËÐкó£¬Ð§¹ûÈçÏÂͼ£º

WebFormÐÎʽµ÷ÓÃWEB API

¾¡¹ÜASP.NET WEB APIÊÇASP.NET MVCµÄÆäÖÐÒ»²¿·Ö£¬µ«²¢Ã»¹æ¶¨Ö»ÄÜÔÚASP.NET MVC¼Ü¹¹ÖÐʹÓ㬿ÉÒÔÔÚWebFormÖнøÐе÷Ó㬷½·¨ÈçÏ£º

ÎÒÃǼÌÐøÔÚ½â¾ö·½°¸ÖÐн¨Ò»¸öWeb Application,È»ºóÔÚÓ¦ÓÃÖÐÔö¼ÓÒ»¸öÆÕͨµÄasp.net Web FormÒ³Ãæ£¬È»ºó½«Ö®Ç°µÄAPIÎļþ¼Ð¸´ÖƵ½Õâ¸öеÄwebÏîÄ¿µÄ¸ùĿ¼ÖС£

È»ºóºÍ֮ǰµÄ²½ÖèÒ»Ñù£¬Í¨¹ýEntitiy Framework½¨Á¢customerʵÌåÀ࣬Ȼºó´ò¿ªGlobal.ascx£¬Ð´Èë´úÂëÈçÏ£º

protected void Application_Start (object sender, EventArgs e)
{
HttpConfiguration config = GlobalConfiguration.Configuration;
JsonSerializerSettings settings = new JsonSerializerSettings ();
settings.Converters.Add (new IsoDateTimeConverter());
JsonNetFormatter formatter = new WebAPIWebFormDemo .Http. Formatters . JsonNetFormatter ( settings );
config.Formatters.Insert (0, formatter);
RouteTable .Routes .MapHttpRoute(
name : "DefaultApi",
routeTemplate: "api/ {controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
}

×¢ÒâÕâÀï×öÁËÁ½¸öÊÂÇ飬Ê×ÏÈÔÚWEB API¿ò¼ÜÖÐ×¢²áÁË×Ô¶¨ÒåµÄJSON½âÎöÆ÷£¬È»ºóÊÇ×¢²áÁËweb api ¿ØÖÆÆ÷µÄ·ÓÉ¡£

È»ºó½«Ç°ÎÄ˵µ½µÄʹÓÃjQuery µ÷ÓÃweb apiµÄËùÓдúÂë¶¼¸´ÖƵ½index.aspx(»òdefault.aspx)ÖÐÈ¥¡£È»ºóÔËÐÐÓ¦Óã¬ÈçÏÂͼ£º

¿ÉÒÔ¿´µ½ä¯ÀÀÆ÷µÄµØÖ·À¸£¬ÕâÀïÊÇʹÓô«Í³µÄweb form±íµ¥½øÐзÃÎʵġ£

С½á

±¾ÎĽéÉÜÁËASP.NET MVC 4ÖÐÐÂÍÆ³öµÄ·ûºÏREST¼Ü¹¹µÄWEB API,²¢ÒÔʵ¼ÊÀý×Ó½²½âÁËÈçºÎͨ¹ý²»Í¬µÄ·½Ê½µ÷ÓÃweb api·µ»ØµÄ½á¹û¡£±¾Îĵĸ½¼þÊÇ´úÂ룬ÇëÔÚÕâ¸öµØÖ·ÏÂÔØ£º

http://www.developer.com/imagesvr_ce/6193/Code.zip

   
3848 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì