Yo utilizo una función javascript, si la necesitas explicitamente en C# debes llevarlo a ese lenguaje.
El código javascript es:
Código:
function validar_rut(source, arguments) {
var rut = arguments.Value; suma = 0; mul = 2; i = 0;
var pos = rut.indexOf('-');
if (pos < 0) {//No contiene guion
var tam = rut.length;
rut = rut.substr(0, tam - 1) + '-' + rut.substr(tam - 1, tam);
}
var ctrl = $get(source.controltovalidate);
ctrl.value = rut;
for (i = rut.length - 3; i >= 0; i--) {
suma = suma + parseInt(rut.charAt(i)) * mul;
mul = mul == 7 ? 2 : mul + 1;
}
var dvr = '' + (11 - suma % 11);
if (dvr == '10') dvr = 'K'; else if (dvr == '11') dvr = '0';
if (rut.charAt(rut.length - 2) != "-" || rut.charAt(rut.length - 1).toUpperCase() != dvr)
arguments.IsValid = false;
else
arguments.IsValid = true;
}
Para utilizar:
<asp:TextBox ID="txtRut" runat="server" MaxLength="10"></asp:TextBox>
<asp:CustomValidator ID="rutValidator" runat="server" ControlToValidate="txtRut" Display="Dynamic" ErrorMessage="* Rut no válido" ValidationGroup="Carga" ClientValidationFunction="validar_rut" />