2012-05-29 35 views
0

我使用ASP.NET MVC 2,使用Visual Studio 2008,並且我的視圖是強類型的。驗證使用ValidationAnnotation工作。
我試圖找到的是如何在打開表單時啓動驗證。當它打開模型有錯誤,但錯誤不顯示。當我按提交按鈕時,控制器驗證模型並返回到表單。asp.net mvc如何在渲染之前啓動對象驗證

Public Function EditVente(ByVal pNoEnreg As Integer) As ActionResult 
      Dim dossierVente As VenteDansMedianePlus = model.Helper.selectDossierVente(pNoEnreg) 

     Return View(dossierVente) 
    End Function 

    Public Function enregistrerVente(ByVal pVente As VenteDansMedianePlus) As ActionResult 
     If ModelState.IsValid Then 
      model.Helper.updateDossierVente(pVente) 
      Return RedirectToAction("EditVente", "A009P003", New With {Key .pNoEnreg = pVente.noEnreg}) 
     Else 
      Return View("EditVente", pVente) 
     End If 

    End Function 

我試圖把ModelState.IsValideditVente功能,但它不能正常工作。

我的問題是如何在返回視圖之前啓動模型驗證,因此該視圖具有錯誤消息。

+0

我剛剛發現這個http://stackoverflow.com/questions/5347827/validation-messages-are-displayed-when-page-load。那個人有我的解決方案。 – fanfaron

回答

0

我想你正在尋找TryUpdateModel方法。你可以打電話給你的控制器上此方法,並通過在模型(對不起,我是一個C#開發人員,希望這是正確的)

Public Function EditVente(ByVal pNoEnreg As Integer) As ActionResult 
    Dim dossierVente As VenteDansMedianePlus = model.Helper.selectDossierVente(pNoEnreg) 

    'Update the validation 
    TryUpdateModel(dossierVente) 

    Return View(dossierVente) 
End Function 

欲瞭解更多信息,請查看本SO帖子:When and why do you use TryUpdateModel in asp.net mvc 2?

編輯

的TryUpdateModel法的工作原理大致相同的的UpdateModel法時,除驗證失敗,其中TryUpdateModel不會說的UpdateModel拋出錯誤。

+0

嗨,我試過了,但它給了我一個錯誤,我的對象不能在tryUpdateModel中使用......但我必須承認我使用updateModel而不是tryUpdateModel。我會再試一次。如果框架很容易實現,那應該很簡單,我在想。 – fanfaron

+0

我會嘗試調用updateModel,但在我看來,我嘗試了它,它給了我一個錯誤,我明天發佈它。 – fanfaron

+0

發現這個http://stackoverflow.com/questions/9832742/validation-firing-on-page-load。看來如果我可以傳遞一個假參數,它會觸發模型綁定機制。 – fanfaron