C# 从控制器名称中获取字符串格式的方法列表
我使用以下函数从字符串类型的控制器名称返回操作名称的selectlist:C# 从控制器名称中获取字符串格式的方法列表,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我使用以下函数从字符串类型的控制器名称返回操作名称的selectlist: public ActionResult get_all_action(string controllername) { Type t = Type.GetType(controllername); MethodInfo[] mi = t.GetMethods(); List<SelectListItem> action
public ActionResult get_all_action(string controllername)
{
Type t = Type.GetType(controllername);
MethodInfo[] mi = t.GetMethods();
List<SelectListItem> action = new List<SelectListItem>();
foreach (MethodInfo m in mi)
{
if (m.IsPublic)
if (typeof(ActionResult).IsAssignableFrom(m.ReturnParameter.ParameterType))
{
action.Add(new SelectListItem() { Value = m.Name, Text = m.Name });
}
}
var List = new SelectList(action, "Value", "Text");
return Json(List, JsonRequestBehavior.AllowGet);
}
作为:
显然,Type.GetType返回null,因为它找不到指定名称AccountController的类。您应该使用名称空间指定全名。此外,如果控制器类不是来自执行程序集,则必须使用限定的程序集名称,如
TopNamespace.SubNameSpace.AccountController, MyAssembly
.显然Type.GetType返回null,因为它找不到指定名称AccountController的类。您应该使用名称空间指定全名。此外,如果控制器类不是来自执行程序集,则必须使用限定的程序集名称,如
TopNamespace.SubNameSpace.AccountController, MyAssembly
.AccountController不是完整的类型名称;它必须类似于YourApp.Whatever.AccountController,GetType才能找到它。还值得明确它位于哪个程序集中,例如:
var thisType = GetType();
Type t = thisType.Assembly.GetType(
thisType.Namespace + "." + controllerName);
假设我们的意思是相同的程序集/命名空间AccountController不是完整的类型名;它必须类似于YourApp.Whatever.AccountController,GetType才能找到它。还值得明确它位于哪个程序集中,例如:
var thisType = GetType();
Type t = thisType.Assembly.GetType(
thisType.Namespace + "." + controllerName);
假设我们的意思是相同的程序集/名称空间您应该指定to Type.GetTypecontrollername您应该指定to Type.GetTypecontrollername