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;
}

questionAnswers(1)

yourAnswerToTheQuestion