我正在尝试创建一个通用控制器,即:
public class MyController<T> : Controller where T : SomeType
{ ... }
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用它时,我到处都遇到了这个错误......
控制器名称必须以"控制器"结尾
所以,我的问题,是否有可能在asp.net mvc中创建一个通用控制器?
谢谢!
我想在我的Base控制器中创建一个方法,该方法将获取一个列表并将其作为SelectList返回.我写了一个方法,网站编译,但我得到这个消息:
无法
1[System.Web.Mvc.SelectListItem] GetSelectList[T](System.Collections.Generic.IEnumerable在控制器'PublicationSystem.Controllers.BaseController'上调用操作方法'System.Collections.Generic.IEnumerable 1 [T],System.String,System.String,System.String,System.Object)'因为action方法是通用的方法.
参数名称:methodInfo
我想知道我做错了什么.这是代码:
public partial class BaseController : Controller
{
public IEnumerable<SelectListItem> GetSelectList<T>
(
IEnumerable<T> itemList,
string textField,
string valueField,
string defaultPrompt = "",
object defaultValue = null)
{
IEnumerable<SelectListItem> returnList = null;
if (!string.IsNullOrEmpty(defaultPrompt))
{
returnList = Enumerable.Repeat(
new SelectListItem { Value = (string)defaultValue, Text = defaultPrompt },
count: 1);
}
var textProp = typeof (T).GetProperty(textField);
var valueProp = typeof (T).GetProperty(valueField);
returnList = returnList.Concat
(itemList
.Select(x =>
new SelectListItem
{
Value = Convert.ToString(valueProp.GetValue(x)), …Run Code Online (Sandbox Code Playgroud)