ASP.NET MVC2 - Примеры пользовательских моделей Binder
Я пытаюсь найти некоторые примеры создания настраиваемого связующего объекта для уникального сценария привязки, который мне нужно обрабатывать, но все статьи, которые я нашел, были для более старых версий MVC, которые больше не актуальны в MVC2. Я ссылаюсь на исходный код DefaultModelBinder, чтобы попытаться получить общее представление о том, что мне нужно сделать, но это все сложнее, чем мой сценарий, и у меня возникли проблемы с изолированием конкретной логики, которую мне нужно реализовать.
Моя цель состоит в том, чтобы взять коллекцию пар флажок/текстовое поле и для всех пар Checked, я хотел бы создать пару ключ/значение значения Checkbox и соответствующее значение Textbox. После объединения этих данных мне нужно сделать сериализацию строк в коллекции, чтобы я мог сохранить ее в строковом свойстве желаемого типа модели. Я уже отправляю данные из формы в управляемом формате, что позволит мне связать данный флажок с конкретным текстовым полем, это просто вопрос, как получить все части, в которых они мне нужны.
Кто-нибудь знает о некоторых современных учебниках, которые могут помочь мне начать с создания настраиваемого связующего объекта?
Ответы
Ответ 1
Я не знаю, почему вы считаете, что многое изменилось после MVC 1 в отношении пользовательских привязок моделей. Но если я понимаю, что вы пытаетесь сделать, это должно быть довольно легко.
public class CustomModelBinder : DefaultModelBinder {
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext) {
NameValueCollection form = controllerContext.HttpContext.Request.Form;
//get what you need from the form collection
//creata your model
SomeModel myModel = new SomeMode();
myModel.Property = "value";
//or add some model errors if you need to
ModelStateDictionary mState = bindingContext.ModelState;
mState.Add("Property", new ModelState { });
mState.AddModelError("Property", "There an error.");
return myModel; //return your model
}
}
И ваше действие:
public ActionResult Contact([ModelBinder(typeof(CustomModelBinder))]SomeModel m){
//...
}
Была ли это информация, которую вы ищете?
Ответ 2
Взгляните на несколько примеров Пользовательские привязки модели MVC в моем блоге.