Мой контроллер выглядит так:
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);
}
И у меня проблема с параметром username индекса ActionResult. Я отслеживал переменную имени пользователя, и если я ввожу URL-адрес следующим образом: www.test.com/profile/someUserName
Переменной имени пользователя присваиваются следующие значения:
1. someUserName
2. GetUserHomeData
3. GetUserStatisticsOverview
Я вызываю эти методы Get из моего файла javaScript, почему это происходит и как я могу предотвратить это, т.е. поймать только "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;
}