Parametr ASP.net mVc ActionResult
Mój kontroler wygląda tak:
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);
}
I mam problem z parametrem nazwa użytkownika indeksu ActionResult. Monitorowałem zmienną nazwy użytkownika i jeśli wpisałem url w następujący sposób: www.test.com/profile/someUserName
Zmienna nazwa użytkownika ma te wartości:
1. nazwa_użytkownika
2. GetUserHomeData
3. GetUserStatisticsOverview
Nazywam te metody Get z mojego pliku javaScript, dlaczego tak się dzieje i jak mogę temu zapobiec, tj. Złapać tylko „someUsername”
Oto moja konfiguracja trasy:
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 }
);
Oto, w jaki sposób uzyskuję dostęp do metod Get (używam Angular's $ http)
getResult: function() {
var input = $http.get("/Profile/GetUserHomeData");
var deferred = $q.defer();
deferred.resolve(input);
return deferred.promise;
}