在web api中从post请求中获取formdata是否有诀窍?在使用js FormData()在前端提交表单时,我似乎无法使用namevaluecollection或formdatacollection。我检查了http请求,以验证表单数据是否正在传递给服务器。
JS表单提交
var formData = new FormData();
formData.append('Email', 'email@notarealemail.com');
formData.append('Password', '123');
// submit data using xmlhttprequest
Controller Web Api
public IHttpActionResult CheckUser(FormDataCollection FormData)
{
//formdatacollection and namevaluecollection don't seem to return key based values
}
答案 0 :(得分:2)
实际上,在web api控制器中,您应该检查属性Request
以获取您从页面发布的所有信息。接下来,您可以使用适当的方法获取数据:Request.Content.ReadAsByteArrayAsync
或Request.Content.ReadAsFormDataAsync
(可能是您的情况)或Request.Content.ReadAsStreamAsync
等。这取决于发送的数据格式。
或者您始终可以创建一个包含相应字段的类,并使用JSON发送它以获得另一种方式:
public IHttpActionResult CheckUser(AccountData data)
{
}
你的班级应该是这样的:
public class AccountData {
public String Email { get; set; }
public String Password { get; set; }
}