ASP.NET MVC ModelBinding - установить пользовательское значение - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть модель представления.

public class ViewModel
{
      public string Text { get; set; } 
      public string Name { get; set; } 
}

. В представленной форме указывается только текстовое значение.Я хотел бы установить свойство Name в моем пользовательском связывателе модели.

Итак, я извлек свой пользовательский связыватель модели из класса DefaultModelBinder и переопределил метод BindModel.

Проблема заключается в том, что метод BindModel вызывается только для входящих свойств.

У меня вопрос, как я могу установить значение имени в моей связующей модели цистомы?

1 Ответ

0 голосов
/ 18 ноября 2011

Если у вас нет входящего значения для имени, значит, вы не выполняете (пользовательскую) привязку модели.Вместо этого вы хотите предоставить некоторые данные в объект вашей модели перед выполнением действия, верно?Если это так, используйте ActionFilter для него, переопределите OnActionExecuting () и введите необходимые данные в параметры действия.

public class SupplyNameAttribute : FilterAttribute, IActionFilter
{
 public void OnActionExecuting(ActionExecutingContext filterContext)
 {
    if (filterContext.ActionParameters != null)
     {
         foreach (KeyValuePair<string, object> parameter in filterContext.ActionParameters)
         {
             if (parameter.Key == "Name") parameter.Value == "Hey";
         }
     }        
 }

}

РЕДАКТИРОВАТЬ:

Вы также можете использовать пользовательский ValueProvider для привязки модели по умолчанию, см.

http://mgolchin.net/posts/19/dive-deep-into-mvc-ivalueprovider

...