#asp.net-mvc-3
#asp.net-mvc-3
Вопрос:
Допустим, у меня есть маршрут, подобный следующему
/{controller}/{action}/{id}
Возможно ли привязать идентификатор к свойству в моей модели
public ActionResult Update(Model model)
{
model.Details.Id <-- Should contain the value from the route...
}
Где мой класс модели следующий?
public class Model
{
public Details Details {get;set;}
}
public class Details
{
public int Id {get;set;}
}
Ответ №1:
Вы захотите создать свой собственный пользовательский связующий модуль модели.
public class SomeModelBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
ValueProviderResult value = bindingContext.ValueProvider.GetValue("id");
SomeModel model = new SomeModel() { Details = new Details() };
model.Details.Id = int.Parse(value.AttemptedValue);
//Or you can load the information from the database based on the Id, whatever you want.
return model;
}
}
Для регистрации вашего связующего вы добавляете это в свой Application_Start()
ModelBinders.Binders.Add(typeof(SomeModel), new SomeModelBinder());
Затем ваш контроллер выглядит точно так, как указано выше. Это очень упрощенный пример, но самый простой способ сделать это. Я буду рад предоставить любую дополнительную помощь.