Asp.net mvc 4 MVC4如何调用以下控制方法? [HttpPost] 公共HttpResponseMessage登录(字符串用户名、字符串密码){…}
我想知道下面的WebAPI方法。如何将参数传递到方法中?我想这些不是POST数据。因为当我从web表单发送post数据时,该方法没有响应Asp.net mvc 4 MVC4如何调用以下控制方法? [HttpPost] 公共HttpResponseMessage登录(字符串用户名、字符串密码){…},asp.net-mvc-4,Asp.net Mvc 4,我想知道下面的WebAPI方法。如何将参数传递到方法中?我想这些不是POST数据。因为当我从web表单发送post数据时,该方法没有响应 [HttpPost] public HttpResponseMessage<Response> Login(string username, string password) { ... } 用户数据: 用户名 暗语 登录 Web API方法不打算用作HTML表单的操作,因为它们通常不返回HTML。它们旨在从常规ASP.NET
[HttpPost]
public HttpResponseMessage<Response> Login(string username, string password) { ... }
用户数据:
用户名
暗语
登录
Web API方法不打算用作HTML表单的操作,因为它们通常不返回HTML。它们旨在从常规ASP.NET MVC控制器中使用。因此,尽管您可以使用POST谓词调用此方法,并将这两个参数作为POST请求体的一部分传递,但这取决于您配置的媒体类型是XML还是JSON。另一种可能是使用客户端javascript AJAX调用调用此方法。另一个需要考虑的是非标准方法的名称:Login
。如果希望能够调用它,则需要修改应用程序创建的默认路由,并将{action}
标记包含到路由中
因此:
应成为:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
您将向/api/somecontroller/login
发送POST请求
如果你想坚持传统,你将有以下几点:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
公共类登录控制器:ApiController
{
//POST/api/login
公共HttpResponseMessage帖子(字符串用户名、字符串密码)
{
...
}
}
然后:
public class LoginController : ApiController
{
// POST /api/login
public HttpResponseMessage<Response> Post(string username, string password)
{
...
}
}
用户数据:
用户名
暗语
登录
是的,但我只是想在webAPI中尝试post方法,我找不到比使用web表单更好的方法来尝试。好的,那么您可以使用web表单。只需确保您有正确的路由设置,这将导致此非常规操作名登录
。或者坚持约定。操作
应该是/api/authenicate/login
,控制器中的方法名称应该是login
?是的,如果您的控制器被调用AuthenticateController
并且操作被调用login
,并且您已经修改了路由以包含{action}
令牌,如我的回答所示。
public class LoginController : ApiController
{
// POST /api/login
public HttpResponseMessage<Response> Post(string username, string password)
{
...
}
}
<form action="/api/login" id="loginForm" method="post">
<fieldset>
<legend>Userdata:</legend>
<label for="username">Username</label>
<input id="username" name="username" type="text" value="" />
<label for="password">Password</label>
<input id="password" name="password" type="password" value="" />
<button type="submit">Login</button>
</fieldset>
</form>