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ć.
Jak rozwinął się z projektu jest to ? Czy przejście na MVC jest opcją? Zapewnia dokładnie to, co jesteś tutaj. –
@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 –
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. –