MVC 5';中的接口问题;无法创建接口';的实例;

本文关键字:接口 创建 实例 问题 MVC | 更新日期: 2023-09-27 18:27:44

嗨,我正在尝试使用MVC 5项目中的接口,代码如下:

public ActionResult Index(IAccountController AccountInterface) 
{
    var DynamicID_DDL = AccountInterface.IDMethod(); 
    var model = new loggedinViewModel
    {
        bIDlistItems = new SelectList(DynamicID_DDL)
    };
    ViewBag.DynamicID_DDL = new List<ID>(DynamicID_DDL);            
    return View(model);
}

&

接口

public interface IAccountController
{
    languageSetting[] languageSettingMethod();
    ID[] IDMethod();
}

然而,我得到了错误:

无法创建接口的实例。

为什么会发生这种情况,我该如何解决?

MVC 5';中的接口问题;无法创建接口';的实例;

当通过某种路由调用MVC控制器时,模型绑定器会尝试找到该参数的空CTOR,并在进入控制器操作方法之前初始化该对象。接口不能实例化,因为它们没有空的CTOR。。。如果您不关心紧密耦合,则可以将参数类型更改为实现该接口的具体类。

或者这里是自定义模型绑定的例子

     public class HomeCustomBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            HttpRequestBase request = controllerContext.HttpContext.Request;
            string title = request.Form.Get("Title");
            string day = request.Form.Get("Day");
            string month = request.Form.Get("Month");
            string year = request.Form.Get("Year");
            return new HomePageModels
            {
                Title = title,
                Date = day + "/" + month + "/" + year
            };
        }
        public class HomePageModels {
            public string Title { get; set; }
            public string Date { get; set; }
        }
    }

创建一个实现接口的类

Public class AccountController: IAccountController
{
    //Interface Methods
}

在操作方法中使用类作为参数

 public ActionResult Index(AccountController Account) 
  {
        //Your Code
  }