【发布时间】:2014-05-23 14:35:48
【问题描述】:
我正在开发一个 asp.net mvc 项目,在该项目中我创建了一个带有一些下拉列表的局部视图。这些填充了ajax,并且应该用作过滤器。 (我猜这与我的问题并不相关,但无论如何很高兴知道)。
尝试调用局部视图时出现问题,说明如下:
An error occurred when trying to create a controller of type 'Project.Name.Web.Controllers.PlanFilterController'. Make sure that the controller has a parameterless public constructor.
但是,我的控制器似乎有一个无参数的构造函数;
public class PlanFilterController : BaseController
{
public PlanFilterControllerViewModel Model { get; set; }
public List<DropDownItem> Items { get; set; }
public List<ProjectContract> AllProjects { get; set; }
public List<CustomerContract> AllCustomers { get; set; }
public List<UnitContract> AllUnits { get; set; }
private ProjectServiceClient ProjectClient { get; set; }
private CustomerServiceClient CustomerClient { get; set; }
public PlanFilterController()
{
AllProjects = new List<ProjectContract>();
AllCustomers = new List<CustomerContract>();
AllUnits = new List<UnitContract>();
ProjectClient = new ProjectServiceClient();
CustomerClient = new CustomerServiceClient();
AllProjects = ProjectClient.GetProjects().ToList();
AllCustomers = CustomerClient.GetCustomers().ToList();
AllUnits = UnitClient.GetUnits(true, "", false).ToList();
}
// GET: /PlanFilter/
[ChildActionOnly]
public ActionResult FilterControl()
{
return PartialView();
}
// Populate dropdowns
public JsonResult GetCascadeCustomers()
{
Items = new List<DropDownItem>();
foreach (var customer in AllCustomers)
{
Items.Add(new DropDownItem
{
ItemId = customer.Id,
ItemName = customer.Name
});
}
return Json(Items, JsonRequestBehavior.AllowGet);
}
public JsonResult GetCascadeProjects()
{
Items = new List<DropDownItem>();
foreach (var project in AllProjects)
{
Items.Add(new DropDownItem
{
ItemId = project.Id,
ItemName = project.Name
});
}
return Json(Items, JsonRequestBehavior.AllowGet);
}
public JsonResult GetCascadeUnits()
{
Items = new List<DropDownItem>();
foreach (var unit in AllUnits)
{
Items.Add(new DropDownItem
{
ItemId = unit.Id,
ItemName = unit.Name
});
}
return Json(Items, JsonRequestBehavior.AllowGet);
}
}
我在这里缺少什么?另外,如果有人可以解释为什么会这样,那就太好了:)
【问题讨论】:
-
构造函数是否可能只是抛出异常?此外,可能不建议为每个控制器实例加载所有项目、所有客户和所有单元。
-
构造函数可以抛出任何异常(例如最后一行)吗?
-
事实证明,它实际上可以.. ;) 添加我的服务引用时出现了问题,并且某些代码没有正确生成。这再次导致构造函数崩溃并出现上述异常。
-
另外,我不确定我是否应该添加上述评论作为对这个问题的回答。建议表示赞赏:)
-
我认为这应该是由 web.config 中过时的 MVC 程序集版本引起的。
标签: c# asp.net asp.net-mvc