ASP.NET MVC2 — примеры привязки пользовательских моделей
-
23-09-2019 - |
Вопрос
Я пытаюсь найти несколько примеров создания настраиваемой привязки модели для уникального сценария привязки, который мне нужно обработать, но все найденные мной статьи относились к более старым версиям MVC, которые больше не актуальны в MVC2.Я ссылался на исходный код DefaultModelBinder, чтобы попытаться получить общее представление о том, что мне нужно сделать, но это намного сложнее, чем мой сценарий, и у меня возникли проблемы с выделением конкретной логики, которую мне нужно реализовать.
Моя цель - взять коллекцию пар Checkbox/Textbox, и для всех проверенных пар я хотел бы создать пару ключ/значение значения Checkbox и связанного значения Textbox.После агрегирования этих данных мне нужно выполнить сериализацию строк в коллекции, чтобы я мог сохранить ее в строковом свойстве нужного типа модели.Я уже отправляю данные из формы в управляемом формате, который позволит мне связать данный флажок с конкретным текстовым полем, осталось только выяснить, как получить все части там, где они мне нужны.
Кто-нибудь знает какие-нибудь современные руководства, которые помогут мне начать создавать собственную связующую модель?
Решение
Я не знаю, почему вы думаете, что со времен 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's an error.");
return myModel; //return your model
}
}
И ваши действия:
public ActionResult Contact([ModelBinder(typeof(CustomModelBinder))]SomeModel m){
//...
}
Это именно та информация, которую вы ищете?
Другие советы
Взгляните на несколько примеров Пользовательские связующие модели MVC в моем блоге.