validação discreta não funciona com conteúdo dinâmico

Eu estou tendo problemas tentando obter a validação de jquery não intrusiva para trabalhar com uma visão parcial que é carregada dinamicamente através de uma chamada AJAX.

Eu tenho passado dias tentando fazer esse código funcionar sem sorte.

Aqui está a visão:

@model MvcApplication2.Models.test

@using (Html.BeginForm())
{
 @Html.ValidationSummary(true);
 <div id="res"></div>
 <input id="submit" type="submit" value="submit" />
}

A visão parcial:

@model MvcApplication2.Models.test

@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);

<script type="text/javascript" >
  $.validator.unobtrusive.parse(document);
</script>

O modelo:

  public class test
  {
    [Required(ErrorMessage= "required field")]
    public int MyProperty { get; set; }
  }

O controlador:

    public ActionResult GetView()
    {
        return PartialView("Test");
    }

e finalmente, o javascript:

$(doument).ready(function () {
$.ajax({
    url: '/test/getview',
    success: function (res) {

        $("#res").html(res);
        $.validator.unobtrusive.parse($("#res"));
    }
});

$("#submit").click(function () {
    if ($("form").valid()) {
        alert('valid');
        return true;
    } else {
        alert('not valid');
        return false;
    }
});

A validação não funciona. Mesmo que eu não preencha nenhuma informação no texbox, o evento submit mostrará o alerta ('válido').

No entanto, se em vez de carregar dinamicamente a exibição, eu uso@Html.Partial("test", Model) para renderizar a View parcial na visualização principal (e eu não faço a chamada AJAX), a validação funciona bem.

Isto é provavelmente porque se eu carregar o conteúdo dinamicamente, os controles não existem no DOM ainda. Mas eu faço uma ligação para$.validator.unobtrusive.parse($("#res")); o que deve ser suficiente para deixar o validador sobre os controles recém-carregados ...

Alguém pode ajudar?

questionAnswers(7)

yourAnswerToTheQuestion