【发布时间】:2014-01-09 16:09:32
【问题描述】:
我的控制器如下所示:
public ActionResult Index(string username)
{
if (string.IsNullOrEmpty(username))
{
_userId = User.Identity.GetUserId();
}
else
{
var user = UserService.GetUserByUserName(username);
if (user != null)
{
_userId = user.Id;
}
else
{
return RedirectToAction("Index", "Routines");
}
}
return View();
}
[HttpGet]
public JsonResult GetUserHomeData()
{
return Json(CreateHomeViewModel(), JsonRequestBehavior.AllowGet);
}
[HttpGet]
public JsonResult GetUserStatisticsOverview()
{
return Json(CreateUserStatisticsOverviewViewModel(), JsonRequestBehavior.AllowGet);
}
我对 ActionResult Index 的参数用户名有疑问。我已经监控了用户名变量,如果我输入这样的 url:www.test.com/profile/someUserName
变量用户名分配了以下值:
1. 一些用户名
2. 获取用户主页数据
3. GetUserStatisticsOverview
我从我的 javaScript 文件中调用这些 Get 方法,为什么会发生这种情况以及如何防止这种情况发生,即仅捕获“someUsername”
这是我的路线配置:
routes.MapRoute("Profile", "profile/{userName}",
new { controller = "Profile", action = "Index", userName = UrlParameter.Optional }
);
routes.MapRoute("Default", "{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是我访问 Get 方法的方式(我使用的是 Angular 的 $http)
getResult: function() {
var input = $http.get("/Profile/GetUserHomeData");
var deferred = $q.defer();
deferred.resolve(input);
return deferred.promise;
}
【问题讨论】:
-
你的路由表是什么样的?
-
@Grumbler85 我已经编辑了帖子并添加了路线代码
-
例如,您如何访问 GetUserHomeData?
-
请指定测试的 url、结果参数和调用的控制器操作。
-
@Grumbler85 我再次编辑帖子并添加了那段代码
标签: asp.net asp.net-mvc asp.net-mvc-5