C# html表单发布到web api 2控制器

C# html表单发布到web api 2控制器,c#,asp.net-web-api,dapper,owin,C#,Asp.net Web Api,Dapper,Owin,好的,我正试图了解WebAPI,我想创建一个mokup登录页面,将用户名和密码发布到一个认证控制器。然而,我似乎没有在我的帖子里得到任何东西 当我尝试验证控制器中的用户名和密码时,这会导致问题: public class LoginCredentials { public string Username { get; set; } public string Password { get; set; } } public class AuthenticationControl

好的,我正试图了解WebAPI,我想创建一个mokup登录页面,将用户名和密码发布到一个认证控制器。然而,我似乎没有在我的帖子里得到任何东西

当我尝试验证控制器中的用户名和密码时,这会导致问题:

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);;
    }
   }
public类LoginCredentials
{
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
}
公共类身份验证控制器:ApiController
{
/// 
///创建已验证的会话。如果已成功验证,则返回“Set Cookie”标头
///包含将来请求的cookie。登录失败时,HTTP
返回401错误。
/// 
[HttpPost,AllowAnonymous]
[路由(“api/登录”)]
公共HttpResponseMessage登录([FromBody]登录凭据)
{           
注销();
credentials.Username=credentials.Username??string.Empty;
credentials.Password=credentials.Password??string.Empty;
var authResult=Authentication.Authenticate(credentials.Username,
凭证(密码);
if(authResult==null | | authResult.User==null)
返回身份验证。GetUnauthorizedResponse();
如果(!authResult.UseAllowed)
返回Authentication.GetNotUseAllowedResponse
(结果、状态);
var authenticationManager=Request.GetOwinContext().Authentication;
authenticationManager.SignIn(authResult.User.ToIdentity());
返回新的HttpResponseMessage(HttpStatusCode.NoContent);;
}
}
因此,我的表格如下所示:

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

登录信息
用户名
密码
日志
在…上

不确定我所说的不正确。

是否尝试将输入的
名称
属性值与视图模型属性名称相同

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

这将把表单发布的数据绑定到视图模型对象