Tentando usar essa solução para validar o AjaxForm Formulário ASP.Net MVC Ajax com validação jQuery mas estou recebendo erro: Uncaught exception: TypeError: Cannot convert "$("MyFrom").validate()" to object
Meu de:
@using (Ajax.BeginForm("MyFromAction", "Something", null, new AjaxOptions() { OnBegin = "onBeginMyFrom", OnFailure = "onFailureMyFrom", OnSuccess = "onSuccessMyFrom" }, new { @id = "MyFrom" }))
{
}
Meu formulário estava funcionando corretamente e postando no servidor, mas depois de usar a validação do jQuery, estou recebendo o erro acima.
Alguma ideia?
ATUALIZAR: Eu não mencionei que estou usando o MVCContrib FluentHtml.
MVCContrib requerido isto http://weblogs.asp.net/srkirkland/archive/2011/03/08/adding-unobtrusive-validation-to-mvccontrib-fluent-html.aspx para obter um trabalho de validação discreto.
O MvcContrib suportará validação discreta na próxima versão por padrão?
Respostas:
1 para resposta № 1A resposta que você está vendo foi relacionada a umversão anterior do ASP.NET MVC. Na ASP.NET MVC 3, a validação do cliente é executada usando o plugin de validação do jquery e isso é feito de maneira discreta. Você não precisa de nenhum código para isso. Então, a primeira coisa é ter certeza de que você incluiu os scripts apropriados:
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
então esse javascript discreto e validação estão habilitados no web.config:
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
Agora você pode ter seu formulário AJAX se comportando corretamente:
@using (Ajax.BeginForm("MyFromAction", "Competition", null, new AjaxOptions() { OnBegin = "onBeginMyFrom", OnFailure = "onFailureMyFrom", OnSuccess = "onSuccessMyFrom" }, new { @id = "MyFrom" }))
{
...
}
O formulário verificará se há erros de validação no lado do cliente e ele não será enviado até que sejam corrigidos.