2011-11-04 35 views
0

如果條件X爲真,我需要在動作中使用DataAnnotations對一個複雜類型進行後期綁定。我不能在方法params中綁定所有東西,因爲它們中的一些不會存在,除非X == true,所以Model.IsValid將會是false(因爲它試圖綁定不存在的參數),因爲複雜類型的驗證失敗。MonoRail BindObject()在ASP MVC3中等價嗎?

MonoRail通過允許您在需要時允許您manually bind解決了這個問題,這是我確切的想知道如果在MVC3中有類似的東西嗎?

我無法重載行動,因爲它吹了一個模糊的調用,我不能張貼到不同的行動,因爲形式是所有動態內容,所以我看到唯一的選擇是滾動我自己的驗證/綁定機制拉出數據註釋與驗證.... boooo :(

回答

1

我想你需要什麼是ControllerBase.TryUpdateModel方法(它有許多重載) 您同樣可以使用它像BindObject

有些型號:

public class MyModel 
{ 
    [Required] 
    public string Name { get; set; } 

    public string Description { get; set; } 
} 

在控制器操作:

[HttpPost] 
public ActionResult UpdateModel(bool? acceptedConditions) 
{ 
    var model = new MyModel(); 
    if (acceptedConditions ?? false) 
    { 
     if (TryUpdateModel(model)) 
     { 
      //Do something when the model is valid 
     } 
     else 
     { 
      //Do something else when the model is invalid 
     } 

    } 
    return View(); 
} 
+0

這很好地工作,謝謝! – Tom

相關問題