formulaire html post à web api 2controller

asp.net-web-api c# dapper owin

Question

ok, alors j'essaie de me familiariser avec web API, et je voulais créer une page de connexion mokup, qui affiche le nom d'utilisateur et le mot de passe sur un contrôleur d'authentification. Cependant, je ne semble rien avoir dans mon post

Poster null

Cela pose des problèmes lorsque j'essaie de valider le nom d'utilisateur et le mot de passe dans mon contrôleur:

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);;
    }
   }

Ma forme ressemble donc à:

  <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>

Je ne sais pas ce que je n'ai pas correct.

Réponse acceptée

Avez-vous essayé de donner à la propriété name entrées la même valeur que les noms de propriété du modèle de vue?

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

Cela liera les données de votre formulaire à l'objet du modèle de vue.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi