現在我ViewModel
看起來是這樣的:MVC 6自定義模型綁定使用依賴注入
public class MyViewModel
{
private readonly IMyService myService;
public ClaimantSearchViewModel(IMyService myService)
{
this.myService = myService;
}
}
我Controller
消耗這個ViewModel
看起來是這樣的:
public class MyController : Controller
{
private readonly IMyService myService;
public HomeController(IMyService myService)
{
this.myService = myService;
}
public IActionResult Index()
{
var model = new MyViewModel(myService);
return View(model);
}
[HttpPost]
public async Task<IActionResult> Find()
{
var model = new MyViewModel(myService);
await TryUpdateModelAsync(model);
return View("Index", model);
}
}
我需要的是我的Controller
到看起來是這樣的:
public class MyController : Controller
{
private readonly IServiceProvider servicePovider;
public MyController(IServiceProvider servicePovider)
{
this.servicePovider = servicePovider;
}
public IActionResult Index()
{
var model = servicePovider.GetService(typeof(MyViewModel));
return View(model);
}
[HttpPost]
public IActionResult Index(MyViewModel model)
{
return View(model);
}
}
Righ牛逼現在,調用第一Index
方法(在我Startup class
與
builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource(x => x.Name.Contains("ViewModel")));
)工作正常,但做POST
到Index(MyViewModel model)
給你一個No parameterless constructor defined for this object
例外。我意識到custom model binder
可以使用我的DI
將是最可能的解決方案...但我無法找到任何幫助,甚至可以從這裏開始。請幫助我,尤其是在MVC 6
的Autofac
。
檢查這個【答案】(http://stackoverflow.com/a/23571035/3432471) –
是的,我已經看到了,我們終於得到了這個工作,但不得不用一些黑客的手段來完成它......爲了解決這個問題,我們現在需要這個問題的答案(由我的同事問) http://stackoverflow.com/q/35640858/550975然後我們將在這裏分享我們的實施 –
我也在這裏發佈了這個問題:https://groups.google.com/forum/#!topic/autofac/1Zin8oh7x1E –