2012-02-19 14 views
33

Sto giocando con il nuovo wep api in mvc 4 beta e aggiungendo alcuni nuovi controller api al mio sito mvc esistente. Il problema è che non posso nominare i controller web API come i miei controller esistenti. Per ora ho dato loro nomi come ProductApiController ma non è molto riposante. Qual è una buona strategia per la denominazione di questi nuovi controller quando li si aggiunge a un sito mvc esistente?Mixer controller e controller di sito API

risposta

53

Problema è impossibile denominare i controller di Web api come i controller esistenti.

Si potrebbe avere i controller API con lo stesso nome dei controller esistenti. Basta metterli in uno spazio dei nomi diverso per rendere felice il compilatore.

Esempio:

namespace MyAppName.Controllers 
{ 
    public class ProductsController: Controller 
    { 
     public ActionResult Index() 
     { 
      var products = productsRepository.GetProducts(); 
      return View(products); 
     } 
    } 
} 

e il controllore API:

namespace MyAppName.Controllers.Api 
{ 
    public class ProductsController: ApiController 
    { 
     public IEnumerable<Product> Get() 
     { 
      return productsRepository.GetProducts(); 
     } 
    } 
} 

e quindi si ha: /products e /api/products rispettivamente con cui lavorare.

+0

Quindi posso aggiungere una sottocartella api nella cartella controller e aggiungere i controller api lì? – terjetyl

+0

@TT., Sì, è una possibilità. –

+2

O forse un'Area per il web api è più appropriata? – terjetyl

Problemi correlati