A validação de dados do campo personalizado
Seu personalizado classe campo pode conter validação de dados. Cada personalizado tipo de campo pode herdar validação de sua classe campo pai, pode substituir validação do seu pai ou até mesmo chamar validação do seu pai como parte de sua própria lógica validação. Você especificar personalizado validação de dados e preupdate processamento lógica para seu personalizado classe campo em um substituir do GetValidatedString método M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object). (A implementação usar como padrão simplesmente chama o ToString ToString método de classe de valor; Por esse motivo, se o campo classe herda diretamente da SPField, ou de uma classe derivada que não não próprio substituir o GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) método, você Deve substituir GetValidatedString para fornecer validação lógica se qualquer é necessária.)
Executar a validação de dados
Enquanto você pode executar validação de dados em vários lugares na sua codificar, incluindo controles forma, é altamente recomendável que você adicionar qualquer lógica validação de dados server-side necessários para o GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) método do seu personalizado classe campo. Isso ajuda a garantir que o validação de dados necessário é aplicada para os dados em seu campo e os dados no de conteúdo banco de dados.
Em casos onde dados está sendo atualizados por meio de qualquer do seguinte significa:
Usando um controle forma
a interface de usuário, ou
programaticamente pelo modelo de objeto,
Windows SharePoint Services 3.0 invoca o GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) método sempre que dados estão armazenados em um SPField ou classe derivada. Método Windows SharePoint Services wssnoversshort GetValidatedStringSPListItemSPListItem.this["field name"].
Observação
É possível para os usuários a atualização de dados em um campo de maneiras que não invocar o GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) método e por isso, siga não invocar qualquer lógica validação de dados contida o método.Isso inclui usando código não gerenciado ou serviço da Web métodos que não invocar o objeto SPListItem T:Microsoft.SharePoint.SPListItem para atualização de dados campo.De exemplo, quando um usuário atualizações item da lista dados usando a exibição Folha de dados, os itens de lista são atualizados sem chamar o GetValidatedString método M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object).
Além disso, você pode usar o método GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) para retornar mensagens de erro seqüência de caracteres para o aplicativo chamado ou forma, permitindo que você fornecer exibir normal e manipulação de erros validação de dados para a classe campo.
Para retornar uma mensagem de erro, a GetValidatedString M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) método deverá lançar um SPFieldValidationException como um erro. Você pode fornecer o apropriado mensagem de erro como parâmetros para o construtor SPFieldValidationException T:Microsoft.SharePoint.SPFieldValidationException seqüência de caracteres. No Windows SharePoint Services 3.0, se o usuário insere um valor inválido e clica em OK sobre a forma, a mensagem será exibida em texto vermelho próximo para o campo no novo padrão e formulários Editar (item da lista).
O seguinte exemplo mostra uma versão substituído de GetValidatedString que verifica se o campo tem um valor quando for exigido um campo e que a versão seqüência de caracteres do valor não excede um limite especificado. (O Required P:Microsoft.SharePoint.SPField.Required propriedade registros se o campo for exigido ou não.)
public override String GetValidatedString(Object value)
{
if ((this.Required == true) && (value.ToString() == ""))
{
throw new SPFieldValidationException(this.Title
+ " must have a value.");
}
else if (value.ToString().Length > MAXLENGTH)
{
throw new SPFieldValidationException(this.Title
+ " cannot be longer than " + MAXLENGTH.ToString());
}
return base.GetValidatedString(value);
}
Validação na interface de usuário
Se os usuários podem ser configuração valor do campo de em um interface do usuário Other Than o padrão novo ou formulários Editar (item da lista), você também deve validar dados que os usuários inserem em interface do usuário controle do campo. Em particular é recomendável que se o campo é exigido para que um valor, esse requisito deve ser imposto no interface do usuário nível. Se você estiver usando um do interno Windows SharePoint Services 3.0 classes que derivar de BaseFieldControl para processar seu campo, você pode confiar em sua validação interna para aplicar Required. If you are deriving your own control from BaseFieldControl or one of its derivations and you override the Validate or CreateChildControls method, then you will need to provide the enforcement of Required as well as any other UI-level validation you want to do.
Sua lógica validação interface do usuário pode estar em tanto o método Validate M:Microsoft.SharePoint.WebControls.BaseFieldControl.Validate ou o método CreateChildControls M:Microsoft.SharePoint.WebControls.BaseFieldControl.CreateChildControls ou uma combinação dos dois. Um ponto fraco da colocação validação lógica para o CreateChildControls M:Microsoft.SharePoint.WebControls.BaseFieldControl.CreateChildControls método é que o método só é chamado quando o campo está sendo processado em uma forma, portanto, a validação não ocorrer se você atualização o valor no modelo de objeto.
Um substituir do Validate M:Microsoft.SharePoint.WebControls.BaseFieldControl.Validate método deve relatório seu resultado por configuração o IsValidtrue ou false e, na último maiúsculas e minúsculas, configuração ErrorMessage para um apropriado mensagem.
A seguinte é um exemplo de um substituir das Validar método. Ele primeiro verifica se o atual modo controle é exibir, no qual maiúsculas e minúsculas não importa se o campo é inválido porque ele não pode ser alterado assim mesmo. O método também parece para ver se o Value P:Microsoft.SharePoint.WebControls.BaseFieldControl.Value propriedade já é conhecida por estar inválido, verificando o IsValid P:Microsoft.SharePoint.WebControls.BaseFieldControl.IsValid propriedade. Se uma dessas verificações for True, ela não fará nada. Se nenhum for verdadeira, o método chama o de base Validar which will set IsValid to false if it finds anything wrong with the Value property and set an appropriate ErrorMessage. (The Microsoft.SharePoint.WebControls.BaseFieldControl.Validate method does nothing, so if the class whose Validar método está sendo substituído for derivado diretamente do BaseFieldControl, a chamar para o de base Validar método pode ser omitido.) Finalmente, o método verifica o valor de Required e fiscaliza esse valor.
public override void Validate()
{
if (ControlMode == SPControlMode.Display || !IsValid)
{
return;
}
base.Validate();
if (Field.Required &&
(Value == null || Value.ToString().Length == 0))
{
this.ErrorMessage = Field.Title + " must have a value."
IsValid = false;
return;
}
}
Observação
Use the RenderValidationMessage method to render the ErrorMessage.
Consulte também
Tarefas
Walkthrough: Criar um tipo de campo personalizado