25 messaggi dal 14 luglio 2011
ciao a tutti; stavo seguendo un vostro video sulla costruzione di una spa (aspilive-creare-single-page-application-asp.net-mvc)
Ho un dubbio riguardo al routing di Breeze:

1) ho creato un mio controller e definito il seguente codice:

[BreezeController]
    public class UserDetailController : ApiController
    {
        readonly EFContextProvider<UserEntities> _contextProvider =
        new EFContextProvider<UserEntities>();

        // ~/breeze/todos/Metadata
        [HttpGet]
        public string Metadata()
        {
            return _contextProvider.Metadata();
        }

        [HttpGet]
        public IQueryable<User> Users()
        {
            return _contextProvider.Context.User;
        }

        
    }


il routing di breeze è così definito (BreezeWebApiConfig.cs)
using System.Web.Http;

[assembly: WebActivator.PreApplicationStartMethod(
    typeof(PaymentsManager.App_Start.BreezeWebApiConfig), "RegisterBreezePreStart")]
namespace PaymentsManager.App_Start {
  ///<summary>
  /// Inserts the Breeze Web API controller route at the front of all Web API routes
  ///</summary>
  ///<remarks>
  /// This class is discovered and run during startup; see
  /// http://blogs.msdn.com/b/davidebb/archive/2010/10/11/light-up-your-nupacks-with-startup-code-and-webactivator.aspx
  ///</remarks>
  public static class BreezeWebApiConfig {

    public static void RegisterBreezePreStart() {
        GlobalConfiguration.Configuration.Routes.MapHttpRoute(
            name: "BreezeApi",
            routeTemplate: "api/{controller}/{action}"
        );
    }
  }
}


a quale indirizzo locale devo puntare per poter accedere alla mia web api Users()? Di default vedo che utilizzando
var entityManager = new breeze.EntityManager('api/UserDetailController');


accoda sempre alla chiamata /MetaData

grazie
Ciao.
Innanzitutto ti chiedo se hai forzato tu, nel file BreezeWebApiConfig,
la route
routeTemplate: "api/{controller}/{action}"

perche' Breeze di suo crea una route
routeTemplate: "breeze/{controller}/{action}"

Ma questo non cambia la sostanza, era solo per capire. Se in un progetto usi solamente Breeze, non cambia nulla.
Poi se vuoi ottenere la lista degli utenti la chiamata sara' simile a questa
var query = EntityQuery.from('Users')
                .orderBy('Username');

return manager.executeQuery(query)
                .then(querySucceeded)
                .fail(queryFailed);


Dove 'Users' e' il nome della action nel tuo Controller Breeze, mentre
'manager' lo avrai definito cosi':
// Con il tuo BreeeWebApiConfig
var manager = new breeze.EntityManager('api/TuoController');

// Con quello di default
var manager = new breeze.EntityManager('breeze/TuoController');


Ciao
Alberto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.