Unobtrusive jQuery Validation com forms dinâmicos

03/05/2013 21:53:00 By Felipe Pessoto

Recentemente tive um problema ao usar um form dinâmico no ASP.NET MVC. A validação não "intrusiva" é processada assim que a página termina de carregar, e a partir daquele momento não é mais alterada. Porém eu tinha uma página que carregava todo o conteúdo do form via Ajax, e neste caso é ainda pior do que carregar um novo form, pois se o form já existia ele é marcado para não ser processado novamente, então preciso primeiro desmarca-lo e depois ativar a validação novamente. O código é simples, só não é algo suportado ou documentado, e depende de detalhes da implementação atual:

var form = $('#form-adiciona-entrega');

form.removeData('validator').removeData('unobtrusiveValidation');//Este passo só é necessário se o form já existia. Se o form em si é gerado dinamicamente, não precisa desse "reset"

$.validator.unobtrusive.parse(form);

 

Encontrei também este código, que diz fazer isso automaticamente a cada chamada ajax, mas que depende também de detalhes do ASP.NET MVC:

$(document).ajaxSuccess(function (event, xhr, settings) {
   if (settings.mvcTargetElement) {
       $(settings.mvcTargetElement.getAttribute("data-ajax-update")).each(function () {
          $.validator.unobtrusive.parse(this);
     });
  }
});

 

Fontes:

http://btburnett.com/2011/01/mvc-3-unobtrusive-ajax-improvements.html

http://stackoverflow.com/questions/11045256/jquery-client-side-validate-not-working

ASP.NET MVC, usando Array, List, IEnumerable no ViewModel e ModelBind

11/16/2012 18:44:00 By Felipe Pessoto

Um problema comum que sempre me fazia perder um bom tempo e deixava o código um pouco mais sujo era trabalhar com Arrays ou melhor, IEnumerable's em geral. Normalmente tenho um IEnumerable<AlgumaCoisa> no meu ViewModel e quero usar todas as funcionalidades do ASP.NET MVC normalmente com o Model Binding.

Assumindo o seguinte ViewModel:

public class PredioViewModel
{
    public string Nome { get; set; }
    public List<AndarViewModel> Andares { get; set; }
}
public class AndarViewModel
{
    public int Id { get; set;}
    public string Nome { get; set; }
    public decimal Preco { get; set; }
}

Read more...

ASP.NET MVC Windows Authentication redirecionando pro login

09/25/2012 22:29:23 By Felipe Pessoto

Esse problema aconteceu em um novo projeto que estou trabalhando na Athié, em ASP.NET MVC 4, mas deve acontecer no 3 também, já que acredito ser um problema no WebPages utilizado pelo Razor. Não sei exatamente o motivo, mas o WebPages sobrescreve algumas configurações de Membership para "facilitar" o uso do WebMatrix. Não concordo com a decisão já que o produto principal não é o WebMatrix. De qualquer forma, o problema é o seguinte, já configurei o web.config pra usar Windows Authentication, com e sem impersonate e o primeiro request sempre redirecionava para a url de login que no caso não existe e dá erro 404. Pensei ser um problema do Chrome, mas também acontecia com o Firefox, exceto com o Internet Explorer.

Para solucionar o problema é preciso colocar essa chave no appSettings:

<add key="enableSimpleMembership" value="false"/>

Voltando o Membership ao padrão em vez de sobrescrever pelo Membership do WebPages.

É estranho que o ASP.NET MVC 3 e 4 vem com templates de Intranet e os mesmos não incluem essa chave.

UPDATE: A raiz do problema está na presença da dll WebMatrix.Data.dll. No meu caso ela estava presente pois o projeto foi criado com o template Internet e depois alterado pra Windows Authentication. Removendo essa dll não precisa da chave no web.config

ASP.NET MVC, Web API, Razor agora são realmente Open Source

03/27/2012 22:24:30 By Felipe Pessoto

Com o apoio do Phil Haack, o ASP.NET MVC é Open Source desde a primeira versão, sendo usado inclusive no Mono. Isso parece ter aberto as portas pra uma Microsoft muito mais Open Source, que hoje além de ter vários projetos Open Source, como MVC, DLR, IronPython, IronRuby, Web Pages/Razor, WebAPI, etc. também está usando vários projetos Open Source em seus produtos, como o jQuery, jQuery UI, Modernizr, recentemente o JSON.NET, entre outros.

Hoje o ScottGu anunciou grandes notícias. Teremos o ASP.NET Web Pages e Web API disponibilizados com a licença Apache 2.0, permitindo que também sejam incluídos no Mono. Além disso, pela primeira vez, qualquer desenvolvedor poderá enviar patches e códigos que serão avaliados pela equipe da Microsoft e se aprovado será integrado ao código fonte oficial dos produtos. Isso é uma grande mudança nos conceitos da Microsoft, ainda não imagino como será o processo para garantir que o código é legitimo e não foi copiado de algum outro produto protegido por copyright, que era uma das preocupações em relação a aceitas códigos do público.

Os códigos fonte serão disponibilidados no Codeplex pelo projeto http://aspnetwebstack.codeplex.com/ usando o recém anunciado suporte para Git, sempre que algum desenvolvedor da Microsoft fizer um checkin teremos o código disponível imediamente.

ASP.NET MVC 2 Preview 2

10/01/2009 05:40:00 By Felipe Pessoto

Mais dois meses e já temos o Preview 2 do ASP.NET MVC 2. Algumas das novidades deste Preview:

  • Validação Client-Side - Agora também é possível ter validação baseada nos metadados das propriedades, graças ao jQuery validation library que agora também vem no pacote.
  • Areas - Agora você pode criar Areas sem precisar ter um projeto separado para cada uma.

Roadmap

O download  está disponível apenas pro Visual Studio 2008 SP1, quem quiser usar no VS 2010 deve esperar o Beta 2,que já virá com o MVC 2 Preview 2, assim como o RTM virá com o MVC 2 RTM