带有ASP.NET MVC的Sencha ExtJS 5-通过代理保存模型
我刚刚开始使用带有ASP.NET Web API的Sencha ExtJS 5 其中一个基本示例是创建模型并将数据发布到“代理” 我的ExtJS代理正在发布到ASP.NET Web API,该API希望Id列中的值为空,以便作为新记录插入到db 问题是ExtJS“create”函数会自动为model id列生成一个字符串id(例如SessionModel-1) 我附上了保存请求有效负载的屏幕截图带有ASP.NET MVC的Sencha ExtJS 5-通过代理保存模型,asp.net,asp.net-mvc,extjs,extjs4,extjs5,Asp.net,Asp.net Mvc,Extjs,Extjs4,Extjs5,我刚刚开始使用带有ASP.NET Web API的Sencha ExtJS 5 其中一个基本示例是创建模型并将数据发布到“代理” 我的ExtJS代理正在发布到ASP.NET Web API,该API希望Id列中的值为空,以便作为新记录插入到db 问题是ExtJS“create”函数会自动为model id列生成一个字符串id(例如SessionModel-1) 我附上了保存请求有效负载的屏幕截图 Ext.define("SessionModel", { extend: "Ex
Ext.define("SessionModel", {
extend: "Ext.data.Model",
fields: [
{ name: 'id', type: 'int' },
{ name: 'title', type: 'string' },
{ name: 'approved', type: 'bool' , defaultValue : false }
],
proxy: {
type: 'rest',
url: '/api/Session'
}
});
var mySession1 = Ext.create("SessionModel", {
title: 'C++',
approved: true,
});
mySession1.save();
Session.cs-模型定义如下:
namespace WebApplication1.Models
{
public class Session
{
public int Id { get; set; }
public string Title { get; set; }
public bool Approved { get; set; }
}
}
SessionController.cs-控制器POST:
// POST api/Session
[ResponseType(typeof(Session))]
public IHttpActionResult PostSession(Session session)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Sessions.Add(session);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = session.Id }, session);
}
如何阻止ExtJS自动生成id,或者使用“保存”的正确方法是什么?是的,ExtJS正在填充,因为它们需要它来进行内部操作。如果要在客户端进入服务器之前设置id属性,则应创建自定义代理类并重写。在那里,您可以检查所需操作是否为create
,并进行相应设置
buildRequest: function(operation) {
var request = this.callParent(arguments);
if (request.getAction() === 'create') {
request.getRecords().forEach(function(record) {
record.set('carId', ''); //assing desired value
});
}
return request;
}
这是一个来自Skilltle的好例子。在检查ModelState之前设置session.Id=0。。。