0

当我$routeProvider与 MVC.Net 一起使用时,它不起作用。

我正在使用 MVC.Net 的 Write up Backend 示例。以下是我正在使用的路线

配置(功能($routeProvider){
    $路由提供者。
      当('/',{控制器:ListCtrl,templateUrl:'home/listitem'})。
      当('/home',{控制器:ListCtrl,templateUrl:'home/listitem'})。
      when('/edit/:projectId', { controller: EditCtrl, templateUrl: '/home/detail' }).
      当('/new',{控制器:CreateCtrl,templateUrl:'/home/detail'})。
      否则({redirectTo:'/'});
  });

但不幸的是,它没有调用listitemdetails

4

3 回答 3

3

这工作正常。如下设置您的 RouteConfig.cs:

        // Will handle partial page view requests
        routes.MapRoute(
            name: "Partials",
            url: "partials/{controller}",
            defaults: new { controller="Home", action = "Index" }
        );

        // Will handle all other requests by sending it to the main controller
        routes.MapRoute(
            name: "Application",
            url: "{*url}",
            defaults: new { controller = "Main", action = "Index" }
        );

然后你的角度配置是这样的:

 .config(['$routeProvider', '$locationProvider',
        function($routeProvider, $locationProvider) {
            $routeProvider
                .when('/', {
                    templateUrl: '/partials/home',
                    controller: 'HomeController'
                })
                .when('/home', {
                    templateUrl: '/partials/home',
                    controller: 'HomeController'
                })
                .when('/gallery', {
                    templateUrl: '/partials/gallery',
                    controller: 'GalleryController'
                });
                .when('/services', {
                    templateUrl: '/Services',
                    controller: 'ServicesController'
                });

            // NOTE: This part is very important
            $locationProvider.html5Mode(true);
        }
    ]);

还有你的 MVC 控制器:

public class MainController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return PartialView("_Home");
    }
}

public class GalleryController : Controller
{
    public ActionResult Index()
    {
        return PartialView("_Gallery");
    }
}

将您的部分视图放在共享文件夹中。

现在,在幕后,您可以像往常一样使用 MVC 控制器和视图执行所有操作,包括剃须刀等。

于 2013-11-27T14:35:53.653 回答
1

在我在配置文件中尝试这个解决方案之前,我也有这个问题。

配置文件

myapp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {

// Specify the three simple routes ('/', '/About', and '/Contact')
$routeProvider.when('/', {
    templateUrl: '/Home/Home',
    controller: 'homeCtrl',
});
$routeProvider.when('/Login', {
    templateUrl: '/account/Index',
    controller: 'loginCtrl',
});
$routeProvider.when('/About', {
    templateUrl: '/Home/About',
    controller: 'aboutCtrl',
});
$routeProvider.when('/Contact', {
    templateUrl: '/Home/Contact',
    controller: 'contactCtrl'
});
$routeProvider.when('/First', {
    templateUrl: '/account/First',
    controller: 'firstCtrl'
});
$routeProvider.when('/Fullpage', {
    templateUrl: '/Home/Fullpage',
    controller: 'fullpageCtrl'
});
$routeProvider.otherwise({
    redirectTo: '/'
});

// Specify HTML5 mode (using the History APIs) or HashBang syntax.
//$locationProvider.html5Mode({ enabled: true, requireBase: false });
$locationProvider.html5Mode(false);}]);

index.cshtml 文件

<a class="brand" href="#/">Simple Routing</a>
    <div class="nav-collapse collapse">
        <ul class="nav">
            <li class="active"><a href="#/">Home</a></li>
            <li><a href="/#/About">About</a></li>
            <li><a href="/#/Contact">Contact</a></li>
            <li><a href="/#/Login">Login</a></li>
            <li><a href="/#/First">first</a></li>
            <li><a href="/#/Fullpage">fullpage</a></li>
        </ul>
    </div><!--/.nav-collapse -->
于 2016-05-13T11:45:30.270 回答
0

正如@jpmorin 建议的那样,除非出于某种原因您需要以AngularJS 无法做到的方式动态生成视图,否则MVC 视图是多余的。您只需要提供静态文件,并为它们进行一些数据绑定。将 BreezeJS视为解决方案。

如果这不能满足您的要求,您需要提供您的 MVC 代码以获得更好的答案。我个人建议前一种解决方案。

于 2013-04-23T04:27:37.483 回答