Javascript 使用ASP.NET MVC路由参数在angular js controller中显示未定义
这是我使用asp.net MVC路由的UrlJavascript 使用ASP.NET MVC路由参数在angular js controller中显示未定义,javascript,angularjs,asp.net-mvc,asp.net-mvc-4,Javascript,Angularjs,Asp.net Mvc,Asp.net Mvc 4,这是我使用asp.net MVC路由的Url http://localhost:23293/Exam?id=1 我想访问angular js控制器中的id参数 aoeapp.controller('ExamController', function ($scope, examservice, $routeParams) { $scope.exams = []; $scope.id = $routeParams.id; alert($scope.id); $scope.getAllexams =
http://localhost:23293/Exam?id=1
我想访问angular js控制器中的id参数
aoeapp.controller('ExamController', function ($scope, examservice, $routeParams) {
$scope.exams = [];
$scope.id = $routeParams.id;
alert($scope.id);
$scope.getAllexams = function (id) {
examservice.getExamMaster(id).success(function (data) {
$scope.exams = data;
}).error(function (data, status, Xhr) {
alert(Xhr);
});
};
$scope.getAllexams(id);
});
所以这里$scope.id显示未定义
我的mvc路由只是默认路由
编辑
角路线
aoeapp.config(function ($routeProvider) {
$routeProvider.when('/', {
controller: 'HomeController',
templateUrl: 'Pages/Home.html'
}).when('/Exam/:id', {
controller: 'ExamController',
templateUrl: 'Pages/Exam.html'
}).when('/Test/:id', {
controller: 'TestController',
templateUrl: 'Pages/Test.html'
}).otherwise({ redirectTo: '/' });
});
我有一个类似的问题,我的角度路由路由到我的MVC控制器。我使用了一个catchall路线修复了它: 将此路线添加到您的
应用程序启动/RouteConfig.cs
:
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Angular",
url: "Exam/{*url}",
defaults: new {controller = "Angular", action = "Index" }
);
在控制器/AngularController.cs
文件中执行以下操作:
[Route("Exam/{*url}")]
public ActionResult Index()
{
return View();
}
这将拦截对
/Exam
的所有调用,并将它们重定向到您的路由器。您可能需要使用路由
属性名称播放一段视频。我也遇到了类似的问题,我的角度路由被路由到MVC控制器。我使用了一个catchall路线修复了它:
将此路线添加到您的应用程序启动/RouteConfig.cs
:
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Angular",
url: "Exam/{*url}",
defaults: new {controller = "Angular", action = "Index" }
);
在控制器/AngularController.cs
文件中执行以下操作:
[Route("Exam/{*url}")]
public ActionResult Index()
{
return View();
}
这将拦截对
/Exam
的所有调用,并将它们重定向到您的路由器。您可能需要使用路由
属性名播放一段音乐。我用另一种方法解决了这个问题。我创建了一个ViewBag
变量来存储查询字符串或id,您也可以使用模型
,然后将其传递到角度方法中。通过阅读以下代码,您可以更清楚地理解这一点:
剃须刀视图
<form name="ExamForm" ng-init="$scope.setQueryStringToScopeId(@ViewBag.Id)">
....
</form>
MVC控制器
aoeapp.controller('ExamController', function ($scope, examservice) {
$scope.id = 0;
$scope.setQueryStringToScopeId = function(id) {
$scope.id = id;
};
....
});
public ActionResult Exam()
{
ViewBag.Id = Request.QueryString["Id"];
return View();
}
您还可以在
Razor视图中直接使用查询字符串。让我知道这是否适合您。我用不同的方法解决了这个问题。我创建了一个ViewBag
变量来存储查询字符串或id,您也可以使用模型
,然后将其传递到角度方法中。通过阅读以下代码,您可以更清楚地理解这一点:
剃须刀视图
<form name="ExamForm" ng-init="$scope.setQueryStringToScopeId(@ViewBag.Id)">
....
</form>
MVC控制器
aoeapp.controller('ExamController', function ($scope, examservice) {
$scope.id = 0;
$scope.setQueryStringToScopeId = function(id) {
$scope.id = id;
};
....
});
public ActionResult Exam()
{
ViewBag.Id = Request.QueryString["Id"];
return View();
}
您还可以在Razor视图中直接使用查询字符串。让我知道这是否适合您。Angular不关心您的服务器端路由。你的角路由是什么?好的,但是如果我使用角路由,它与MVC路由冲突,并且它不工作,你可以在两侧使用路由,但是你的角应用程序只关心角路由。将角度路由添加到此问题。aoeapp.config(函数($routeProvider){$routeProvider.when('/',{controller:'HomeController',templateUrl:'Pages/Home.html'})。when('/Exam/:id',{controller:'ExamController',templateUrl:'Pages/Exam.html'})。when('/Test/:id',{controller:'TestController',templateUrl:'Pages/Test.html'})。否则({重定向到:'/'});});但问题是角度路由不起作用,应用程序只接受mvc路由…所以我想知道在路由中要更改什么Pangular不关心服务器端路由。您的角度路由是什么?好的,但如果我使用角度路由,它与mvc路由冲突,并且不起作用,您可以在两个si上使用路由des,但您的角度应用程序只关心角度路由。将角度路由添加到此问题。aoeapp.config(函数($routeProvider){$routeProvider.when('/',{controller:'HomeController',templateUrl:'Pages/Home.html'})。when('/Exam/:id',{controller:'ExamController',templateUrl:'Pages/Exam.html'})。当('/Test/:id',{controller:'TestController',templateUrl:'Pages/Test.html'})时。否则({重定向到:'/'});});但问题是角度路由不工作,应用程序只接受mvc路由…..所以我想知道如果我在$scope.setQueryStringToScopeId=function(id){$scope.id=id;alert($scope.id);};在函数内部工作正常,但在此函数外部再次显示0值我必须查看您的代码,但一旦执行了$scope.setQueryStringToScopeId
,您就可以警报($scope.id)
并且它会工作…如果我在$scope.setQueryStringToScopeId=函数(id){$scope.id=id;警报($scope.id);};在函数内部工作正常,但在此函数外部再次显示0值我必须查看您的代码,但一旦执行了$scope.setQueryStringToScopeId
,您就可以警报($scope.id)
,它将工作。。。