۱ مطلب با کلمهی کلیدی «نحوه بدست آوردن تمامی Action و Controller های یک پروژه MVC» ثبت شده است
نحوه بدست آوردن تمامی Action و Controller های یک پروژه MVC
بسم الله الرحمن الرحیم
ممکن است شما بخواهید در یک پروژه MVC لیست تمامی کنترلر ها و اکشن های پروژه خود بدست آورید.
در اینجا یک Extension متد نوشته ام که می توانید به سادگی لیست تمامی کنتترلرهای برنامه خود را بدست اورید:
اگر با متدهای توسعه یا همان Extension متد آشنایی ندارید، این مطلب را بخوانید
public static List<string> GetControllerNames(this System.Web.Mvc.Controller controller)
{
try
{
List<string> controllerNames = new List<string>();
GetSubClasses<System.Web.Mvc.Controller>().ForEach(
type => controllerNames.Add(type.Name));
return controllerNames;
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
}
برای استفاده از این کنترلر کافی است به صورت زیر عمل کتید
List<string> listController = Controller.GetControllerNames();
ممکن است بخواهید لیست اکشن های یک کنترلر را نیز بدست آورید برای این کار نیز یک متد دیگر نوشته ام که اینکار را برای شما انجام می دهد
public static List<string> ActionNames(string controllerName)
{
try
{
var types =
from assemblies in AppDomain.CurrentDomain.GetAssemblies()
from assembliesTypes in assemblies.GetTypes()
where typeof(System.Web.Mvc.IController).IsAssignableFrom(assembliesTypes) &&
string.Equals(controllerName + "Controller", assembliesTypes.Name, StringComparison.OrdinalIgnoreCase)
select assembliesTypes;
var controllerType = types.FirstOrDefault();
if (controllerType == null)
{
return Enumerable.Empty<string>().ToList();
}
return new System.Web.Mvc.ReflectedControllerDescriptor(controllerType)
.GetCanonicalActions().Select(x => x.ActionName)
.ToList();
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
}
برای استفاده از این متد باید به صورت زیر عمل کنید:
List<string> listAction = ActionNames("AccountController");
انشالله که مفید واقع شود.