【发布时间】:2013-04-11 20:19:10
【问题描述】:
我开始使用 ASP.NET Web API。当我在控制器中获取我的实体时,我想知道序列化功能如下:
public class EntitiesController : ApiController
{
[Queryable]
public IEnumerable<Entity> Get()
{
return m_repository.GetAll();
}
public HttpResponseMessage Post(Entity entity)
{
if (ModelState.IsValid)
{
m_repository.Post(entity);
var response = Request.CreateResponse<Entity>(HttpStatusCode.Created, entity);
return response;
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
在 JavaScript 方面:
// create new entity.
$.post("api/entities", $(formElement).serialize(), "json")
.done(function (newEntity) { self.contacts.push(newEntity); });
但我不需要实体。我想接收字符串。所以我用下一种方式改变了控制器:
public class EntitiesController : ApiController
{
[Queryable]
public IEnumerable<string> Get()
{
return m_repository.GetAll();
}
public HttpResponseMessage Post(string entity)
{
if (ModelState.IsValid)
{
m_repository.Post(entity);
var response = Request.CreateResponse<Entity>(HttpStatusCode.Created, entity);
return response;
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
我为post function 尝试了不同的dataType("json"、"text"、"html")。和不同的data 表示$(formElement).serialize()、"simple Text"、jsonObject、JSON.stringify(jsonObject)。但我总是在服务器端获得null 作为Post 操作中的entity 参数。
我做错了什么?
【问题讨论】:
标签: javascript c# asp.net-mvc post