【发布时间】:2010-05-19 11:44:20
【问题描述】:
可以在我的控制器中有一个静态字段供我的模型绑定器调用吗?
例如。
public class AuctionItemsController : Controller
{
private IRepository<IAuctionItem> GenericAuctionItemRepository;
private IAuctionItemRepository AuctionItemRepository;
public AuctionItemsController(IRepository<IAuctionItem> genericAuctionItemRepository, IAuctionItemRepository auctionItemRepository) {
GenericAuctionItemRepository = genericAuctionItemRepository;
AuctionItemRepository = auctionItemRepository;
StaticGenericAuctionItemRepository = genericAuctionItemRepository;
}
internal static IRepository<IAuctionItem> StaticGenericAuctionItemRepository;
这里是模型绑定器
public class AuctionItemModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
if (AuctionItemsController.StaticGenericAuctionItemRepository != null) {
AuctionLogger.LogException(new Exception("controller is null"));
}
NameValueCollection form = controllerContext.HttpContext.Request.Form;
var item = AuctionItemsController.StaticGenericAuctionItemRepository.GetSingle(Convert.ToInt32(controllerContext.RouteData.Values["id"]));
item.Description = form["title"];
item.Price = int.Parse(form["price"]);
item.Title = form["title"];
item.CreatedDate = DateTime.Now;
item.AuctionId = 1;
//TODO: Stop hardcoding this
item.UserId = 1;
return item;
}}
我使用 Unity 作为 IoC,我发现在 IoC 容器中注册我的模型绑定器很奇怪。
我还有什么其他好的设计考虑吗?
【问题讨论】:
标签: model-view-controller dependency-injection unity-container