2010-08-13 3 views
0

Скажем, я имею следующую модельКак связать объект модели с помощью Controller.TryUpdateModel <TModel> Метод (TModel, String, String [], String []), чтобы исключить некоторые свойства?

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[]) 

EDIT

Я не обновить свою модель на методе действия, а с помощью 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 
} 

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

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

+0

Но как вы знаете, к какому классу должны быть привязаны данные в форме? Можете ли вы объяснить, что такое «FormViewModel»? – mikerennick

+0

@Mikerennick: извините, я не публиковал все. Я отредактирую вещи – Richard77

+0

, если вы хотите увидеть совершенно другой подход к привязке к модели, вы можете скачать здесь http://valueinjecter.codeplex.com/ решение asp.net mvc samples, я думаю, это могло бы помочь – Omu

ответ

0

Вы можете использовать модель 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; } 
} 

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

Вы можете разместить исключение lude в методе ActionResult, например ...

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

он выглядит например, вы применяете include/exclude на уровне класса. Можете ли вы использовать TryUpdateModel (model, // any to exclude)? – Richard77

+0

Я отредактировал свой ответ в ответ на этот вопрос. – mikerennick

+0

Я расскажу вам, почему я хочу, чтобы вы использовали TryUpdateModel. См. Редактирование в моем сообщении. – Richard77

 Смежные вопросы

  • Нет связанных вопросов^_^