Angular路由模板URL是否支持ASP.Net MVC 5项目中的*.cshtml文件?

Fai*_*zan 23 javascript c# asp.net-mvc razor angularjs

我正在研究MVC 5项目.当我在我的视图中使用html页面时,它会加载该页面,但是当我使用.cshtml页面时,它不会加载视图.出现空白页面.

$urlRouterProvider
    .otherwise('/app/dashboard');

$stateProvider            
    .state('app', {
        abstract: true,
        url: '/app',
        templateUrl: 'tpl/app.html'
    })
    .state('app.dashboard', {
        url: '/dashboard',
        templateUrl: 'tpl/app_dashboard.html'
    })
Run Code Online (Sandbox Code Playgroud)

请指导我如何使用cshtml文件或最佳方法.

Yas*_*ser 30

你不能.

您不能在角度路线的模板网址中使用.cshtml文件的路径.你能在浏览器中打开.cshtml文件吗?没有权利 ?这同样适用于此.

解决方法:

.cshtml文件包含服务器端代码,要渲染它,您需要使用控制器和操作.他们将为您呈现.cshtml文件.因此,让控制器操作为您返回该视图,并将URL用于角度路径中的控制器操作.

例如:

state('app.dashboard', {
        url: '/dashboard',
        templateUrl: '/dashboard/index'
     })
Run Code Online (Sandbox Code Playgroud)

public class DashboardController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

ps:尝试过,这对我有用


Zan*_*non 30

是的你可以.

Yasser添加类似的答案,但使用ngRoute:

1)您需要将Controller/Action引用到ASP.NET MVC应用程序,而不是引用部分HTML.

.when('/order', {
    templateUrl: '/Order/Create',
    controller: 'ngOrderController' // Angular Controller
})
Run Code Online (Sandbox Code Playgroud)

2)您的ASP.NET MVC将返回.cshtml视图:

public class OrderController : Controller
{
    public ActionResult Create()
    {
        var model = new MyModel();
        model.Test= "xyz";

        return View("MyView", model);
    }
}
Run Code Online (Sandbox Code Playgroud)

3)你的MyView.cshtml将混合Razor和Angular.注意:作为Angular应用程序的一部分,请将布局设置为null.

@model MyProject.MyModel

@{
   Layout = null;
}

<h1>{{ Test }}</h1> <!-- Angular -->
<h1>Model.Test</h1> <!-- Razor -->
Run Code Online (Sandbox Code Playgroud)

  • 这应该标记为正确的答案.这也是我在向下滚动之前奇怪地解释Yasser的可行解决方法.我只是更喜欢这个,因为它似乎很好地利用了Razor和Angular一体机!方便的是,你添加了一些我不得不摸索的东西.谢谢! (6认同)
  • 这对我很有帮助. (2认同)