相关疑难解决方法(0)

在asp.net mvc中是否可以制作通用控制器?

我正在尝试创建一个通用控制器,即:

public class MyController<T> : Controller where T : SomeType
{ ... }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用它时,我到处都遇到了这个错误......

控制器名称必须以"控制器"结尾

所以,我的问题,是否有可能在asp.net mvc中创建一个通用控制器?

谢谢!

asp.net generics asp.net-mvc controller

27
推荐指数
2
解决办法
2万
查看次数

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)

c# generics asp.net-mvc

6
推荐指数
1
解决办法
3339
查看次数

标签 统计

asp.net-mvc ×2

generics ×2

asp.net ×1

c# ×1

controller ×1