Как связать объект модели с помощью метода Controller.TryUpdateModel <TModel>(TModel, String, String [], String []), чтобы исключить некоторые свойства? - PullRequest
0 голосов
/ 13 августа 2010

Допустим, у меня есть следующая модель

public class MyClass
{
  public type1 Property1 { get; set; }
  public type1 Property2 { get; set; }
  public type1 Property3 { get; set; }
  public type1 Property4 { get; set; }
  public type1 Property5 { get; set; }  
}

Я бы, например, хотел бы связать только первые 3 свойства.Как я могу это сделать Используя одну из перегрузок для TryUpdateModel (), как это

TryUpdateModel<TModel> Method (TModel, String, String[], String[])

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

Я не обновляю свою модель для метода действия, новместо этого используйте OnActionExecuting фильтр, подобный этому:

 public class RegistrationController : Controller
{

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var serialized = Request.Form["formViewModel"];
        if (serialized != null)
        {
            formViewModel = (FormViewModel)new MvcSerializer().Deserialize(serialized);
            TryUpdateModel(formViewModel);
        }
        else
            formViewModel = (FormViewModel)TempData["formViewModel"] ?? new FormViewModel();
    }
  //All the action methods are here
 }

Итак, я хотел бы исключить некоторые свойства в зависимости от того, какое действие отправляет представление назад.

Спасибо за помощь

1 Ответ

0 голосов
/ 13 августа 2010

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

[Bind(Exclude = "Property1,Property2")]
public class MyClass
{
  public type1 Property1 { get; set; }
  public type1 Property2 { get; set; }
  public type1 Property3 { get; set; }
  public type1 Property4 { get; set; }
  public type1 Property5 { get; set; }  
}

, кстати, вы также можете использовать:

[Bind(Include = "Property3,Property4,Property5")]
public class MyClass
{
  public type1 Property1 { get; set; }
  public type1 Property2 { get; set; }
  public type1 Property3 { get; set; }
  public type1 Property4 { get; set; }
  public type1 Property5 { get; set; }  
}

ОТВЕТЬТЕ НА ВАШ ВОПРОС...............

Вы можете поместить директиву exclude в метод ActionResult следующим образом ...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create( [Bind(Exclude="Property1,Property2")] MyClass myClass)
{ 
     your code....
}
...