2014-06-13 9 views
5

Próbuję użyć FormView i chcę sprawdzić niektóre dane po stronie serwera. Próbuję użyć usługi EnableModelValidation, ale MSDN jest do tego bardzo niekompletna.Jak sprawdzić poprawność danych FormView podczas korzystania z EnableModelValidation?

I saw an aproach (ale o dynamicznych danych zamiast tylko ObjectDataSource) gdzie rzucisz ValidationException i będzie obsługiwać jeśli masz ValidationSummary. Niestety zawiesza się z żółtą stroną błędu, zamiast wyświetlać podsumowanie.

Poniżej moja klasa:

namespace FormViewTest 
{ 
    [DataObject] 
    public class Person 
    { 
     private int age; 

     [DataObjectField(false)] 
     public int Age 
     { 
      get { return age; } 
      set 
      { 
       if (value < 0) 
       { 
        throw new ValidationException("Invalid age"); 
       } 
       age = value; 
      } 
     } 

     public void Insert(Person p) 
     { } 

     public Person Get() 
     { 
      return new Person(); 
     } 
    } 
} 

i aspx:

<asp:FormView runat="server" 
    DataSourceID="ObjectDataSource1" 
    DefaultMode="Insert" 
    EnableModelValidation="true"> 
    <InsertItemTemplate> 
     Age: 
     <asp:TextBox ID="AgeTextBox" runat="server" 
      Text='<%# Bind("Age") %>' /> 
     <br /> 
     <asp:LinkButton ID="InsertButton" runat="server" 
      CommandName="Insert" 
      Text="Insert" /> 
    </InsertItemTemplate> 
</asp:FormView> 

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
    DataObjectTypeName="FormViewTest.Person" 
    InsertMethod="Insert" SelectMethod="Get" 
    TypeName="FormViewTest.Person"></asp:ObjectDataSource> 

<asp:ValidationSummary ID="ValidationSummary1" runat="server" /> 

Próbowałem dodać inną kontrolę, jak powiedział w artykule wspomina jednak nic nie zrobił:

<asp:DynamicValidator ErrorMessage="Error" runat="server" 
    ControlToValidate="ObjectDataSource1" /> 

Mam nadzieję, że ktoś może mi pomóc użyć tego EnableModelValidation, ponieważ nie ma oficjalnej dokumentacji Mogłem o tym wiedzieć.

+0

Jak rozwinął się z projektu jest to ? Czy przejście na MVC jest opcją? Zapewnia dokładnie to, co jesteś tutaj. –

+0

@MikeGuthrie Przepraszamy za opóźnienie. Nie jest to opcja przeniesienia do MVC, ponieważ jest to duża (bardzo duża) aplikacja internetowa i naprawdę chcę się skupić na tej właśnie funkcji 'FormView'. Dziękujemy za –

+0

Nie znalazłem jeszcze sposobu prawidłowego podłączenia funkcji, której szukasz. Czy ten model jest wykorzystywany w wielu miejscach (a więc w dążeniu do walidacji modelu kontra coś w rodzaju '')? Aby uzyskać szybką poprawkę, możesz użyć 'RequiredValidator' i' RangeValidator' w aspx. Zobaczę, czy uda mi się samodzielnie przeprowadzić walidację modelu, czy mam nadzieję, że pojawi się ktoś, kto ma więcej wiedzy. –

Odpowiedz

1

Włączanie że nieruchomość nie będzie nic robić, chyba że używasz DynamicData wersję FormView Zobacz this dla lepszego wyjaśnienia na temat korzystania z ASP.NET Dynamic Data Rusztowania wraz z kilkoma przydatnych linków

+0

Przepraszamy, ale podany link jest wymieniony w tym, który podałem. To nie pomogło mi osiągnąć tego, co chciałem. Ale przynajmniej wyjaśnisz, że działa tylko z danymi dynamicznymi. –

Powiązane problemy