I tried that, but is not finding the routes.

When I first go to the angular page with this url

http://localhost:15258/Office/Index/73

i get this in the address bar
http://localhost:15258/Office/Index/73/#!/


It shows the view as expected

Changing to <a href="#/admin">Admin</a> results in a url of
http://localhost:15258/Office/Index/73/#/admin

So better than before.

But that route is not found. I tried <a href="#*!*/admin">Admin</a> , thats
not found either. My route config looks like this.

// Configure the routes and route resolvers
app.config(['$routeProvider','$locationProvider', 'routes',
routeConfigurator]);function routeConfigurator($routeProvider,
$locationProvider, routes) {

    $locationProvider.hashPrefix('!');

    routes.forEach(function (r) {
        $routeProvider.when(r.url, r.config);
    });
    $routeProvider.otherwise({ redirectTo: '/' });
   // $locationProvider.html5Mode(true);
  }
 // Define the routes function getRoutes() {

    var baseSiteUrlPath = '/app/';

    return [
        {
            url: '/',
            config: {
                templateUrl: baseSiteUrlPath + 'dashboard/dashboard.html',
                title: 'dashboard',
                settings: {
                    nav: 1,
                    content: '<i class="fa fa-dashboard"></i> Dashboard'
                }
            }
        }, {
            url: '#/admin',
            config: {
                title: 'admin',
                templateUrl: baseSiteUrlPath + 'admin/admin.html',
                settings: {
                    nav: 2,
                    content: '<i class="fa fa-lock"></i> Admin'
                }
            }
        }
    ];}

Thanks again for your help Nicholas.



On Tue, Jan 27, 2015 at 5:14 PM, Nicholas Smith <[email protected]>
wrote:

> Your links within the HTML will need to contain the #, so they'll look
> like:
> <a href="#/">Dashboard</a>
> <a href="#/admin">Admin</a>
>
>
>
> On Tuesday, January 27, 2015 at 11:05:54 AM UTC-6, Brian Power wrote:
>>
>> "It sounds like you have a .NET page serving up your angular SPA app at
>> this url:
>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>Ind
>> ex/73/"
>>
>> Yes , thats correct. http://www.blah.com/Office/
>> <http://www.blah.com/Office/?officeid=52>Index/73/" is a .net cshtml page
>> with<html ng-app="app">. It then does a *<div
>> data-ng-include="'/app/layout/shell.html'"></div>*
>>
>> shell.html is the angular layout.
>>
>> "Any routes you define within that SPA app are relative to that.  So if
>> you have a route define as "/admin" the URL for it would be
>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>Ind
>> ex/73/#!/admin"
>>
>> This not happening for me. Are you saying I can have a <a href="/">
>> dashboard</a> with in my angular layout, and it will know I really want <a
>> href="Office/ <http://www.blah.com/Office/?officeid=52>Index/73/#!/">
>> dashboard</a> ?
>>
>> I can live with #! in my url for sure.
>>
>>
>>
>> On Tue, Jan 27, 2015 at 4:49 PM, Nicholas Smith <[email protected]>
>> wrote:
>>
>>> It sounds like you have a .NET page serving up your angular SPA app at
>>> this url:
>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>Ind
>>> ex/73/
>>>
>>> Any routes you define within that SPA app are relative to that.  So if
>>> you have a route define as "/admin" the URL for it would be
>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>Ind
>>> ex/73/#!/admin
>>>
>>> The .NET side will get the request for "http://www.blah.com/Office/
>>> <http://www.blah.com/Office/?officeid=52>Index/73/" and serve up
>>> whatever your .NET code generates for that URL.  Presumably contains your
>>> html and javascript for your SPA app.  Once the pages loads and angular
>>> runs, it examines the rest of the URL after the #! to determine which route
>>> to use.  It will see "http://www.blah.com/Office/
>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/admin" and only
>>> use the "/admin" when matching against your route configs.
>>>
>>> Also I see your original post you actually want URLs like:
>>> http://www.blah.com/Office/52/staff
>>> <http://www.blah.com/Office/?officeid=52/staff>
>>> http://www.blah.com/Office/52/budgets
>>> <http://www.blah.com/Office/?officeid=52/budgets>
>>>
>>> If you don't want the #! in your URLs you'll need to look into html5
>>> mode
>>> see https://code.angularjs.org/1.3.9/docs/guide/$location
>>> I don't recommend going that route, it's extra complexity to setup
>>> within your Angular app, and on the .NET side to make it work.  If you can
>>> live with having the # in your URLs, I'd stick with that for now.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Tuesday, January 27, 2015 at 10:26:36 AM UTC-6, Brian Power wrote:
>>>>
>>>> Thanks for your reply Nicholas.
>>>>
>>>> How can my angular routes stay as they are the same? '/' points to
>>>> http://www.blah.com/
>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>
>>>>  and
>>>> '/admin' points to http://www.blah.com/
>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>admin.
>>>> How do I tell angular "You start at  /Office/Index/73/#/
>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>"
>>>> rather than '/' ? I think I'm misunderstanding something fundamental here.
>>>>
>>>>
>>>> thanks
>>>> Brian
>>>>
>>>>
>>>>
>>>> On Tuesday, January 27, 2015 at 3:10:09 PM UTC, Nicholas Smith wrote:
>>>>>
>>>>> The routes "/" and "/admin" are relative to the URL serving your
>>>>> angular app.  So if your app is at "http://www.blah.com/Office/In
>>>>> dex/73/", then your dashboard would be at "http://www.blah.com/Office/
>>>>> Index/73/#/
>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>"
>>>>> and your admin screen would be "http://www.blah.com/Office/In
>>>>> dex/73/#/admin".  Your routes can stay as-is.  As far as getting the
>>>>> "73" value into your angular app there are a few ways to do it.  I'm not a
>>>>> .NET developer but I think whatever page or script is building the "
>>>>> http://www.blah.com/Office/Index/73"; page could inject the "73" as a
>>>>> value into your page, something like:
>>>>>
>>>>> <script>var office_id=73;</script>
>>>>>
>>>>>
>>>>>
>>>>> On Tuesday, January 27, 2015 at 6:41:22 AM UTC-6, Brian Power wrote:
>>>>>>
>>>>>> Hi Guys,
>>>>>>
>>>>>> I read the other threads on this,but I'm still confused.
>>>>>>
>>>>>> We are building a web site with .net mvc. We have one complex entity,
>>>>>> lets say it an "Office". An office has staff, resources, budgets
>>>>>> etc. A user can have many offices to manage. We have other areas of the
>>>>>> system already built with just .Net. I have a .net view with a list
>>>>>> of offices. When the user clicks on one they're sent to the spa for that
>>>>>> Office. The request goes to a .net controller called
>>>>>> OfficeController. The Index method takes an Id. I want its view to be an
>>>>>> Angular spa.
>>>>>>
>>>>>> My route to the spa is http://www.blah.com/Office/
>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/
>>>>>>
>>>>>> My angular stuff is in a folder called 'app' at the root of the
>>>>>> website. Within the spa I have links to other views of the spa. I want it
>>>>>> to have routes like this.
>>>>>>
>>>>>> http://www.blah.com/Office/52/staff
>>>>>> <http://www.blah.com/Office/?officeid=52/staff>
>>>>>> http://www.blah.com/Office/52/budgets
>>>>>> <http://www.blah.com/Office/?officeid=52/budgets>
>>>>>>
>>>>>> I'm using John Papa's HotTowel demo as a starting point for my spa.
>>>>>> In his routing config. He has this...
>>>>>>
>>>>>> return [
>>>>>>            {
>>>>>>                url: '/',
>>>>>>                config: {
>>>>>>                    templateUrl: 'app/dashboard/dashboard.html',
>>>>>>                    title: 'dashboard',
>>>>>>                    settings: {
>>>>>>                        nav: 1,
>>>>>>                        content: '<i class="fa fa-dashboard"></i> 
>>>>>> Dashboard'
>>>>>>                    }
>>>>>>                }
>>>>>>            }, {
>>>>>>                url: '/admin',
>>>>>>                config: {
>>>>>>                    title: 'admin',
>>>>>>                    templateUrl: app/admin/admin.html',
>>>>>>                    settings: {
>>>>>>                        nav: 2,
>>>>>>                        content: '<i class="fa fa-lock"></i> Admin'
>>>>>>                    }
>>>>>>                }
>>>>>>            }
>>>>>>        ];
>>>>>>
>>>>>>
>>>>>>
>>>>>> When I can access these views via the the browser with 
>>>>>> http://www.blah.com/Office/ 
>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/ and 
>>>>>> http://www.blah.com/Office/ 
>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/Admin . Do I need 
>>>>>> to "pass in" something like "Office/ 
>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/"  to angular and 
>>>>>> build dynamic routes?
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks for reading
>>>>>>
>>>>>> Brian
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>  --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "AngularJS" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>> topic/angular/TuLtaVNh40A/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/angular.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "AngularJS" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/angular/TuLtaVNh40A/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to