Я пытаюсь выяснить привязку модели к текущему mvc6 (кандидат на выпускной студии 2015 года). Это то, что мой код выглядит так далеко:mvc6 обычная модель связующего не обжига
public class MyObjectModelBinder : IModelBinder
{
public Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext.ModelType == typeof(MyObject))
{
var model = new MyObject();
return Task.FromResult(new ModelBindingResult(model, bindingContext.ModelName, true));
}
return Task.FromResult<ModelBindingResult>(null);
}
}
Регистрация в startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
options.ModelBinders.Add(typeof(MyObjectModelBinder));
});
}
Мой контроллер:
[HttpPost]
public void ReceiveMyObject([FromBody] MyObject x)
{
}
Я еще не заботиться о создании на самом деле объект со входа, что меня беспокоит, так это то, что когда я отлаживаю, я вижу, что стрелка контроллера (с x равна нулю), но функция связывания не вызывается. Какие-нибудь идеи о том, что здесь не так?
[EDIT: это уже обновлено] Также обратите внимание, что я уже видел What is the correct way to create custom model binders in MVC6?, но ответ в этом сообщении либо неправильный, либо устаревший, поскольку приведенный пример не реализует текущий IModelBinder.
Благодаря
EDIT: Это Javascript код, который используется, чтобы запустить контроллер:
function sendMessage(i) {
$.ajax({
type: 'POST',
url: 'myurl',
data: data,
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
success: function (data) { console.log(data) }
});
}
Если я уберу его, контроллер больше не срабатывает. Однако, если параметр отсутствует. Я прикрепил javascript, который я использую для тестирования, но в реальном случае вызов выполняется внешним программным обеспечением, поэтому я не могу его изменить. – Plaga