2014-06-13 12 views
5

Ich versuche FormView zu verwenden und einige Daten auf der Serverseite zu überprüfen. Ich versuche, die Eigenschaft EnableModelValidation zu verwenden, aber MSDN ist dafür sehr unvollständig.Wie validieren FormView-Daten bei Verwendung von EnableModelValidation?

I saw an aproach (aber über Dynamic Data statt nur Object), wo man einen ValidationException werfen und es wird handhaben, wenn Sie einen ValidationSummary haben. Leider stürzt es mit der gelben Fehlerseite ab, anstatt die Zusammenfassung anzuzeigen.

Folgende ist meine Klasse:

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(); 
     } 
    } 
} 

und die 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" /> 

Ich habe versucht, andere Kontrolle hinzufügen, wie in dem Artikel sagte ich schon erwähnt, aber es hat nichts:

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

Ich hoffe jemand kann mir helfen, diese EnableModelValidation zu verwenden, da es keine offizielle documenta gibt Ich könnte darüber herausfinden.

+0

Wie eines Projekts entwickelt wurde, ist dies ? Ist die Umstellung auf MVC eine Option? Es bietet genau das, was Sie hier suchen. –

+0

@MikeGuthrie Sorry für die Verzögerung. Es ist keine Option, zu MVC zu wechseln, da es sich um eine große (sehr große) Webanwendung handelt und ich mich wirklich auf diese FormView-Funktion konzentrieren möchte. Danke, –

+0

Ich habe noch nicht gefunden, wie man die Funktionalität richtig anschließt, nach der Sie suchen. Ist dieses Modell an mehreren Stellen zu verwenden (also der Wunsch nach Modellvalidierung gegenüber etwas wie )? Für die schnelle Lösung können Sie 'RequiredValidator' und' RangeValidator' im aspx verwenden. Ich werde sehen, ob ich die Modellvalidierung selbst in die Hand nehmen kann, oder hoffentlich kommt jemand, der besser informiert ist. –

Antwort

1

Enabling diese Eigenschaft wird nicht alles tun, es sei denn, Sie Dynamic Version von Formview verwenden Siehe this für eine bessere Erklärung zur Verwendung von ASP.NET Dynamic Data Baugerüst zusammen mit einigen nützlichen Links

+0

Tut mir leid, aber der Link, den du angegeben hast, wird in dem von mir angegebenen Link erwähnt. Es hat mir nicht geholfen, das zu erreichen, was ich wollte. Aber zumindest klärst du es nur mit Dynamischen Daten ab. –