My view does not starta

0

This is the Error that gives:

Erro de Servidor no Aplicativo '/'.

Não é possível encontrar o recurso.

Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) não pôde ser removido, seu nome foi alterado ou está temporariamente indisponível. Examine o URL e certifique-se de que está digitado corretamente. 

URL solicitada: /Login/Login

Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.0.30319.34009

This is my CSHTML

<!DOCTYPE html>

<html> <head>
    <meta name="viewport" content="width=device-width" />
    <title>Login</title> </head> <body>
    <h2>
        Login do sistema administrativo
    </h2>
    <% Html.EnableClientValidation(); %>
    <%= Html.ValidationSummary("Não foi possível realizar o login, corrija os erros abaixo e tente novamente.") %>
    <div id="loginForm">
        <% using (Html.BeginForm(FormMethod.Post))
        { %>
        <%= Html.AntiForgeryToken() %>
        <b>Login:</b>
        <%= Html.TextBox("LOGIN", "", new { maxlength = "10" })%><br />
        <b>Senha</b>
        <%= Html.Password("SENHA", "", new { maxlength = "10" })%>&nbsp;<input type="submit" value="Entrar" />
        <%} %>
    </div> </body> </html>

This is my controller

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Login(string login, string senha)
        {
             bool userValidate = false;

            if (ModelState.IsValid)
            {
                if (login != "" && senha != "")
                {
                    userValidate = false;
                    ModelState.AddModelError("", "Dados de login inválidos");
                }
                else
                {
                    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "Administrador", DateTime.Now, DateTime.Now.AddMinutes(30), false, "admin", FormsAuthentication.FormsCookiePath);

                    string hashCookies = FormsAuthentication.Encrypt(ticket);
                    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies);

                    Response.Cookies.Add(cookie);

                    userValidate = true;
                }


            }
            //if (!userValidate)
            //    return View();
            //else
            //    return RedirectToAction("Index", "Main");

            return View();
        }

This is my route

routes.MapRoute(
                name: "Login",
                url: "Login",
                defaults: new { controller = "Login", action = "Login", name = "" }
            );

Apparently everything is ok, so I ask: What's missing to upload this View? When I remove HttpPost or create another Action at Taferel Chicotti's suggestion, the output in the View is as follows:

Login do sistema administrativo

<% Html.EnableClientValidation(); %> <%= Html.ValidationSummary("Não foi possível realizar o login, corrija os erros abaixo e tente novamente.") %>
<% using (Html.BeginForm(FormMethod.Post)) { %> <%= Html.AntiForgeryToken() %> Login: <%= Html.TextBox("LOGIN", "", new { maxlength = "10" })%>
Senha <%= Html.Password("SENHA", "", new { maxlength = "10" })%>  <%} %>
    
asked by anonymous 04.08.2014 / 20:10

1 answer

2

The comment is clear: two Actions is required to work, one for the verb POST and another for the verb GET :

public class LoginController : Controller 
{
    public ActionResult Login() 
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(string login, string senha)
    {
         bool userValidate = false;

        if (ModelState.IsValid)
        {
            if (login != "" && senha != "")
            {
                userValidate = false;
                ModelState.AddModelError("", "Dados de login inválidos");
            }
            else
            {
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "Administrador", DateTime.Now, DateTime.Now.AddMinutes(30), false, "admin", FormsAuthentication.FormsCookiePath);

                string hashCookies = FormsAuthentication.Encrypt(ticket);
                HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies);

                Response.Cookies.Add(cookie);

                userValidate = true;
            }


        }
        //if (!userValidate)
        //    return View();
        //else
        //    return RedirectToAction("Index", "Main");

        return View();
    }
}

The% with% checked with Action is only accessible by submitting a form. The other simply displays the% empty%.

    
05.08.2014 / 04:59