5

Sto avendo asp. progetto net mvc4. Angularjs è integrato. Ho già creato pagine HTML e API WEB 2 come da requisiti precedenti.angularjs con pagina cshtml solo pagine non html con web api 2

Ora per qualche ragione devo andare con le pagine CSHTML. in precedenza avevo solo il modello di progetto web api quindi non potevo andare con le pagine cshtml come SOLO il controller MVC può restituire una pagina parziale (cshtml) ma stavo usando solo web apis ...

Così cambiato l'intero modello di progetto e così ora posso avere i controller MVC ... ...

In breve, attualmente non ho progetti mvc4 con le API web già costruiti e le pagine html .....

voglio solo utilizzare le pagine CSHTML invece di usare pagine HTML riposare le cose dovrebbero essere come sono ...

E 'possibile?

Posso sembrare sciocco ma è necessario in questo momento. l'aiuto sarebbe molto apprezzato ...

Solo web, pagine cshtml e solo angularjs. non web apis, html pages e angularjs.

Se sostituisco le pagine html di cshtml, come viene influenzata la rotta angolare?

risposta

3

Bene, questo è il modo in cui lo uso.

C'è index.cshtml come questo

@using System.Web.Optimization 
@inherits System.Web.Mvc.WebViewPage 
@{ Layout = null; }<!DOCTYPE html> 
<html data-ng-app="MyProject"> 
<head> 
    <title data-ng-controller="TitleCtrl" data-ng-bind="Title">My Project</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta http-equiv="cache-control" content="max-age=0" /> 
    <meta http-equiv="cache-control" content="no-cache" /> 
    <meta http-equiv="expires" content="0" /> 
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
    <meta http-equiv="pragma" content="no-cache" /> 

    @Styles.Render("~/Content/min/css") 
</head> 
<body class="body" id="body"> 

    <div class="body" data-ui-view="body"></div> 

    @Scripts.Render("~/js/angular") 
    @Scripts.Render("~/js/MyProject") 
</body> 
</html> 

NOTA: utilizzando angolare UI-Router, è per questo che ui-view è in palce

Ma ancora ci deve essere HomeController:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     // below I do some tricks to make app running on 
     // http://mydomain/app as well as on 
     // http://mydomain/app/ (see the/at the end) 

     var root = VirtualPathUtility.ToAbsolute("~/"); 
     var applicationPath = Request.ApplicationPath; 
     var path = Request.Path; 
     var hasTraillingSlash = root.Equals(applicationPath 
             , StringComparison.InvariantCultureIgnoreCase) 
       || !applicationPath.Equals(path 
             , StringComparison.InvariantCultureIgnoreCase); 
     if (!hasTraillingSlash) 
     { 
      return Redirect(root + "#"); 
     } 

     // my view is not in Views, but in the root of a web project 
     return View("~/Index.cshtml"); 
    } 
} 

Quindi, in questo modo posso utilizzare la potenza della configurazione Bundle (javascript, css) ... mentre si avvia angolare a http://mydomain/app o http://mydomain/app/. controllare anche simile here

Anche in global.asax, dovremmo configura ASP.NET MVC:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("fonts*.woff"); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new {controller = "Home", action = "Index", id =UrlParameter.Optional} 
    ); 
} 

mentre web API dovrebbe essere:

const string IdPattern = @"\d+|[A-Za-z]{1,2}"; 
public static void SetRouting(HttpConfiguration config) 
{ 
    // some custom routes 
    ...    

    // and a default one 
    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}" 
     , constraints: new { id = IdPattern } 
     , defaults: new { id = RouteParameter.Optional } 
    ); 
+0

Diciamo che ho menù che ha pagina prodotti. dopo aver raggiunto la dashboard se faccio clic sulla lista dei prodotti, come mi reindirizzerà alla pagina products.cshtml? – micronyks

+0

in questo momento ho impostato ui router come questo ... url: '/ products', template: '/ products. html ' – micronyks

+0

Ho esteso la mia risposta con Routing per MVC (Home/Index) e Web API. Il trucco è che mentre la Home/Index è caricata e index.csthml è renderizzato ... non abbiamo bisogno di alcun redirecton. Avremo SPA ... ora è compito Angolare caricare tutte le viste ... –

Problemi correlati