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控制器时,模型绑定器会尝试找到该参数的空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
}