با عرض پوزش. من دقت نکرده بودم جایی که میخواهید متد را فرخوانی کنید یک کنترلر نیست.
برای اینکه متدی برای حل مسئله تان داشته باشید که همه جا قابل فرخوانی باشد یک کلاس برایتان ساختم بنام Utils:
using System.Web;
using System.Web.Mvc;
namespace WebApplication3
{
public class Utils
{
public static string GetActionUrl(string action, string controller, object idParam,bool generateFullUrl = false)
{
var request = HttpContext.Current.Request;
string url = new UrlHelper(request.RequestContext).Action(action, controller,new {id = idParam });
if (generateFullUrl)
{
url = $"{request.Url.Scheme}://{request.Url.Authority}{url}";
}
return url;
}
}
}
نحوه فرخوانی به صورت عادی:
string url = Utils.GetActionUrl("Contact", "Home", null);
و اگر می خواهید در آدرسی که این متد باز می گرداند پروتکل (https یا http) و نیز آدرس سایت باشد متد فوق را به این صورت فراخوانی کنید:
string url = Utils.GetActionUrl("Contact", "Home", null,true);