Ext.define('Movie.model.MovieModel', {
extend: 'Movie.model.Base',
fields: [
{ name: 'Movie_id', type: 'int' },
{ name: 'Movie_name', type: 'string' },
{ name: 'Movie_details', type: 'string' },
{ name: 'Movie_release', type: 'string'},
{ name: 'Movie_url', type: 'string' },
{ name: 'Movie_price', type: 'int' },
{ name: 'Rent_day', type: 'string' }
]
});
Ext.define('Movie.store.MovieStore', {
extend: 'Ext.data.Store',
alias: 'store.movie',
storeId: 'movieStore',
model: 'Movie.model.MovieModel',
Fields: ['Movie_id', 'Movie_name', 'Movie_details', 'Movie_release', 'Movie_url', 'Movie_price'],
proxy: {
type: 'rest',
url:'/api/Movies',
disableCaching: true,
useDefaultXhrHeader: false,
api: {
create: 'https://localhost:44369/Movies/AddMovie',
read: 'https://localhost:44369/Movies/GetMovie',
update: 'https://localhost:44369/Movies/EditMovie',
destroy: 'https://localhost:44369/Movies/DeleteMovie'
},
reader:{
type:'json',
headers: { 'Accept': 'application/json' }
},
writer: {
type: 'json',
writeAllFields: false,
}
}, autoLoad: true
});
var data = store.findRecord('Movie_name', name);
var id = data.get('Movie_id');
store.remove(store.findRecord('Movie_id',id,0,false,false,false));
store.sync();
[Route("Movies/DeleteMovie/{id}")]
[EnableCors("*", "*", "*")]
[System.Web.Http.AcceptVerbs("Delete", "Post","Get")]
[System.Web.Http.HttpDelete]
public IHttpActionResult DeleteMovie(int id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Movie movie = db.Movie.Find(id);
db.Movie.Remove(movie);
db.SaveChanges();
return Ok(movie);
}
但是所有的方法都不管用。我在我的
console.log
中遇到这些错误:
:1$id
消息:请求无效
Message Detail:参数字典包含中方法id
的不可空类型System.Int32
的参数System.Web.Http.IHttpActionResult DeleteMovie(Int32)
的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。MovieRentals.Controllers.MoviesController
extjs发送请求的URL是
https://localhost:44369/Movies/DeleteMovie/MovieModel-75?_dc=1682656495712
而不是https://localhost:44369/Movies/DeleteMovie/123
默认情况下,Ext JS 使用名为
id
的字段作为模型实例的唯一标识符。由于模型中标识符的调用方式不同 (Movie_id
),ExtJS 将为每个模型添加一个自动生成的标识符(例如MovieModel-75
)并在 REST 请求中传递它。这与用于向在客户端创建但在服务器上还没有标识符的幻像记录添加标识符的机制相同。
您可以轻松设置自定义 id 属性以用于您的模型。这样你告诉 Ext JS 不是使用
id
而是一个不同的领域。
只需将其添加到模型定义中:
Ext.define('Movie.model.MovieModel', {
extend: 'Movie.model.Base',
idProperty: 'Movie_id',
...
});