我有這樣的控制器:IModelBinder不開火MVC 3
[HttpPost]
public JsonResult Execute(PaymentModel paymentModel){...}
這是模型
public class PaymentModel
{
[Required]
[DisplayName("Full name")]
public string FullName { get; set; }
...
}
這是結合動作
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ModelBinders.Binders.Add(typeof(PaymentModel), new PaymentModelsBinding());
}
這是結合inplementation
public class PaymentModelsBinding : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//Cant get to here with the debugger
}
我不知道這是否相關,但我使用Ninject注入控制器構造函數。
更新 這是怎樣的形式提交:
$.ajax({
type: 'POST',
url: $("#form").attr("action"),
data: $("#form").serialize(),
success: function (json) {
...
},
dataType: "Json"
});
我想這是寧靜的,這意味着我將調用它在每一個可能的WEB方式。
瀏覽器Ajax,瀏覽器經典表單提交,WebClient等等。
更新 這是我的ninject代碼:
kernel.Components.Add<IInjectionHeuristic, CustomInjectionHeuristic>();
kernel.Bind<IPaymentMethodFactory>().ToProvider<PaymentMethodFactoryProvider>().InSingletonScope();
kernel.Bind<IDefaultBll>().To<DefaultBll>().InSingletonScope();
kernel
.Bind<IDalSession>()
.ToProvider<HttpDalSessionProvider>()
.InRequestScope();
感謝
你是怎麼稱呼這個控制器動作的?當動作被調用時,模型聯編程序將被調用。 –
@DarinDimitrov - 我打電話通過網絡表單。 我可以調用'Execute(PaymentModel paymentModel)'而不是之前的模型。 – SexyMF
你能告訴你如何打電話嗎?你在提交的視圖中有一些HTML表單嗎?或者你在使用AJAX?或者以其他方式來調用這個動作? –