html form post para web api 2controller

asp.net-web-api c# dapper owin

Pregunta

Bien, entonces estoy tratando de entender mi API web, y quería crear una página de inicio de sesión de Mokup, que publicara el nombre de usuario y la contraseña en un controlador de autentificación. Sin embargo, parece que no recibo nada en mi publicación

Publicar nulo

esto está causando problemas cuando intento validar el usuario y la contraseña en mi controlador:

public class LoginCredentials
{
    public string Username { get; set; }
    public string Password { get; set; }
}

public class AuthenticationController : ApiController
{
    /// <summary>
    /// Creates an authenticated session. If successfully authenticated returns            a 'Set-Cookie' header
    /// containing the cookie for future requests. On failed login attempt an HTTP 
                401 error is returned.
    /// </summary>
    [HttpPost, AllowAnonymous]
    [Route("api/login")]
    public HttpResponseMessage Login([FromBody]LoginCredentials credentials)
    {           
        Logout();
        credentials.Username = credentials.Username ?? string.Empty;
        credentials.Password = credentials.Password ?? string.Empty;

        var authResult = Authentication.Authenticate(credentials.Username, 
                          credentials.Password);
        if (authResult == null || authResult.User == null)
            return Authentication.GetUnauthorisedResponse();
        if (!authResult.UseAllowed)
            return Authentication.GetNotUseAllowedResponse
                            (authResult.Status);

        var authenticationManager = Request.GetOwinContext().Authentication;
        authenticationManager.SignIn(authResult.User.ToIdentity());

        return new HttpResponseMessage(HttpStatusCode.NoContent);;
    }
   }

Mi forma se ve así:

  <form autocomplete="off" method="post" action="/api/login" name="myLogin">

    <fieldset>
        <legend>Login credentials</legend>

        <div class="form-group">
            <label for="Username">Username</label>
            <input id="Username" type="text" />
        </div>

        <div>
            <label for="Password">Password</label>
            <input id="Password" type="password" />
            <span class="help-block" data-validation="Password"></span>
        </div>

        <div class="form-group center">
            <button type="submit" class="btn btn-primary" data-disable-on-submit="true">Log 
              on</button>
        </div>
    </fieldset>
</form>

no estoy seguro de lo que tengo que no es correcto.

Respuesta aceptada

¿Intentó dar el valor de propiedad del name las entradas igual que los nombres de propiedad del modelo de vista?

 <input id="Username" name="Username" type="text" />

Esto vinculará los datos publicados de su formulario con el objeto de modelo de vista.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué