Является ли angular поддержка URL-адреса шаблона маршрутизации для .cshtml файла в ASP.Net MVC 5 Project?

Я работаю над проектом 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'
    })

Пожалуйста, расскажите мне, как использовать файл cshtml или лучший способ сделать это.

Ответ 1

Да, вы можете.

Добавление аналогичного ответа на Yasser, но с помощью ngRoute:

1) Вместо того, чтобы ссылаться на ваш частичный HTML, вам нужно связать Controller/Action с вашим приложением ASP.NET MVC.

.when('/order', {
    templateUrl: '/Order/Create',
    controller: 'ngOrderController' // Angular Controller
})

2) Ваш ASP.NET MVC вернет представление .cshtml:

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

        return View("MyView", model);
    }
}

3) MyView.cshtml будет смешивать Razor и Angular. Внимание: в качестве частичного для вашего приложения Angular установите макет как null.

@model MyProject.MyModel

@{
   Layout = null;
}

<h1>{{ Test }}</h1> <!-- Angular -->
<h1>Model.Test</h1> <!-- Razor -->

Ответ 2

Вы не можете.

Вы не можете использовать путь к файлу .cshtml в URL шаблона вашего маршрута angular. Вы можете открыть файл .cshtml в своем браузере? Без прав? То же самое и здесь.

Временное решение:

.cshtml файл содержит код на стороне сервера, для его отображения вам нужно использовать контроллер и действие. Они будут отображать этот файл .cshtml для вас. Таким образом, действие контроллера возвращает это представление для вас и использует URL-адрес для действия контроллера в вашем маршруте angular.

например:

state('app.dashboard', {
        url: '/dashboard',
        templateUrl: '/dashboard/index'
     })

с

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

p.s: попробовали, и это сработало для меня

Ответ 3

Вы не можете смешивать угловые и разорваные представления, бритва загружается на сервер, а angular работает на клиенте, он использует javascript, который работает в браузере для рендеринга просмотров, поэтому люди склонны использовать rest api as бэкэнд в вашем случае, так как вы используете .net, это может быть веб-API или стек службы.

то, что вы можете сделать, это выполнить вид бритвы в качестве главной "индексной страницы", но оттуда пусть угловые манипулируют маршрутизацией для "внутренних" страниц.

помните, что angular был основан на идее одностраничного приложения, которое представляет собой другую перспективу архитектуры asp.net mvc.

Ответ 4

cshtml по существу является встроенным кодом csharp с синтаксисом бритвы и отображает html на сайте сервера, поэтому вы не можете использовать в маршрутизации angular, поскольку браузер не recongnise С#