Pergunta

Estou tentando conseguir isso http://blog.stevehorn.cc/2009/06/rendering-modal-dialog-with-aspnet-mvc.html para trabalhar com MVC 3.

Sou muito novo no ASP.Net MVC e comecei um projeto MVC 3 recentemente.Desejo exibir um formulário de login modal quando o usuário clicar no hiperlink Login em meu arquivo _Layout.cshtml:

<a href="#" id="LogIn">Log In</a>

Eu criei uma visualização de login no seguinte local Areas/Auth/Views/Auth/Login.cshtml

Adicionei o seguinte script ao meu arquivo _Layout.cshtml:

    <script type="text/javascript">
        $(document).ready(function () 
        {
            $("#LogIn").click(function (event) 
            {
                $.get( 
                      "~/Areas/Auth/Views/Auth/Login" ,
                      function (htmlResult) 
                      {
                        $("#LoginModal").remove(); //In case this is the second time they've requested the dialog.
                        $("#container").append(htmlResult);
                        $("#LoginModal").dialog();
                      }
                    );
            return false; //To keep the default behavior of the anchor tag from occuring.
});                
</script>

E adicionei um PartialViewResult ao meu AuthController:

        public PartialViewResult LoginView()
    {
        return PartialView("Login");
    }

No entanto, nada acontece quando o link de login é clicado.Qualquer conselho ou link para um bom tutorial do MVC 3 sobre como fazer isso seria apreciado.

Obrigado!

Foi útil?

Solução

Seu URI está errado:

"~/Areas/Auth/Views/Auth/Login"

Esta é uma referência a uma visão, não a uma ação.Seu URI precisa se referir a uma ação.Além disso, o JavaScript não entenderá o ASP.NET ~ sintaxe.Você provavelmente quer algo como <%: Url.Content("~/Auth/Auth/LoginView") %> em vez de.

No futuro, uma boa maneira de depurar essas coisas é o painel de rede do Firebug ou o Fiddler.Você deverá ver a chamada AJAX retornando um 404.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top