我有一个html表单定义为:
<form id="userForm" name="userForm" class="form-horizontal" role="form" ng-submit="submitForm()" novalidate>将几个输入字段绑定到ng模型,如下所示:
<input type="text" class="form-control" ng-model="formAttributes.title" name="formTitle" placeholder="Title of the Form" required>然后,我通过一个角服务将表单对象发布到.net WebAPI 2控制器,使用:
$http.post('/api/UI', "=" + JSON.stringify(userForm))WebAPI2中的Post方法使用FromBodystring值,当userForm是一个作用域JSON对象(而不是html表单对象本身)时,我得到了这种类型的post。但是,无论出于什么原因,如果我传递html表单对象,它都不能工作。
我需要将大量表单发布到类似的控制器,是否有相对简单的方法将html表单对象发布到webapi2控制器而不必操作表单数据对象本身?或者,更清楚地说,是否有一种方法来准备webapi2 post方法,以便我可以这样称呼它:
$http.post('/api/UI',userForm)我阅读了大量关于webapi2的文章,这使我成功地提交了我使用上面的方法创建的任意$scope.object (如果我用“=”将它加上一个"=",然后将contenttype头部更改为json /charset8 8),但是能够提交表单本身似乎要干净得多,我更愿意这样做。在任何情况下,我想知道为什么我不能提交html表单对象后,我无论如何。
任何帮助都将不胜感激。提前感谢!
发布于 2014-08-28 16:59:04
WebApi项目是在Global.asax中配置的,您可以在那里找到一个名为WebApiConfig的类。在这里,您会发现"Media“,上面写着您的WebApi是否能够序列化/反序列化JSON System.Net.Http.Formatting.JsonMediaTypeFormatter()
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//...
System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
config.Formatters.Insert(0, new System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter());
config.EnableSystemDiagnosticsTracing();
}
}如果JSON格式化程序是列表中的第一项,则不需要添加=符号,因为JSON将是默认的反序列化器。
https://stackoverflow.com/questions/25554065
复制相似问题