在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
每一个WEB应用程序都有导航菜单,Abp也为用户提供了通用的创建和显示菜单方式。 创建菜单
由上可知,Administration菜单项有两个子菜单项。对应的生成方法如下: public class SimpleTaskSystemNavigationProvider : NavigationProvider { public override void SetNavigation(INavigationProviderContext context) { context.Manager.MainMenu .AddItem( new MenuItemDefinition( "Tasks", new LocalizableString("Tasks", "SimpleTaskSystem"), url: "/Tasks", icon: "fa fa-tasks" ) ).AddItem( new MenuItemDefinition( "Reports", new LocalizableString("Reports", "SimpleTaskSystem"), url: "/Reports", icon: "fa fa-bar-chart" ) ).AddItem( new MenuItemDefinition( "Administration", new LocalizableString("Administration", "SimpleTaskSystem"), icon: "fa fa-cogs" ).AddItem( new MenuItemDefinition( "UserManagement", new LocalizableString("UserManagement", "SimpleTaskSystem"), url: "/Administration/Users", icon: "fa fa-users", requiredPermissionName: "SimpleTaskSystem.Permissions.UserManagement" ) ).AddItem( new MenuItemDefinition( "RoleManagement", new LocalizableString("RoleManagement", "SimpleTaskSystem"), url: "/Administration/Roles", icon: "fa fa-star", requiredPermissionName: "SimpleTaskSystem.Permissions.RoleManagement" ) ) ); } } 显示菜单 Ajax //构建要传输的参数对象 var newPerson = { name: 'Dougles Adams', age: 42 }; //调用abp的ajax方法 abp.ajax({ url: '/People/SavePerson', data: JSON.stringify(newPerson) //转换成json字符串 }).done(function(data) { abp.notify.success('created new person with id = ' + data.personId); }); .done() //成功, .fail() //失败, .then() //回调嵌套。 下面的一个简单的例子展示ajax请求PeopleController的SavePerson方法,在.done()中可以获取到服务端创建记录成功后返回的记录id。 public class PeopleController : AbpController { [HttpPost] public JsonResult SavePerson(SavePersonModel person) { //TODO: save new person to database and return new person's id //TODO: 创建一个新的person记录并返回此记录的id return Json(new {PersonId = 42}); } } SavePersonModel 包含name,age等属性. SavePerson 上标记了 HttpPost 特性 abp.ajax默认以 POST 方式请求. 返回值被简化成了一个匿名对象。 AJAX 返回值(AJAX return messages) 我们直接返回了一个匿名对象, ABP 通过 MvcAjaxResponse 类型包装了返回值. 实际的返回值类型如下: { "success": true, //正确处理标志 "result": { "personId": 42 //返回的数据 }, "error": null, //如果发生错误,result为null,此处为错误信息的对象,包含message和details两个属性 "targetUrl": null, //可以提供一个url供客户端重定向,例如自动构建下一页的url "unAuthorizedRequest": false //是否通过了授权,如果返回true,客户端应重新登录 } 错误处理(Handling errors) 返回值如下: { "targetUrl": null, "result": null, "success": false, //代表出现异常 "error": { "message": "An internal error occured during your request!", //未捕捉到的异常,通常为系统异常,会自动记录日志,具体提示信息在配置文件配置,可以搜索一下,如果是业务抛出的UserFriendlyException异常,message为具体的错误信息 "details": "..." //发生异常时默认会调用abp.message.error函数,你可以在abp.jquery.js修改,统一处理错误信息。 }, "unAuthorizedRequest": false } 此处会根据Services动态生成WebAPI调用函数:
//通常我们使用ajax会按照如下写法,做一个简单的封装来重用ajax,此处框架可以帮你生成简单的调用方法 var savePerson = function(person) { return abp.ajax({ url: '/People/SavePerson', data: JSON.stringify(person) }); }; //调用时你需要构建参数 var newPerson = { name: 'Dougles Adams', age: 42 }; //直接调用方法,如何生成上面的调用方法可以参考源码中的Abp.Web.Api项目中/ WebApi/ Controllers/ Scripting/ jQuery下的实现 savePerson(newPerson).done(function(data) { abp.notify.success('created new person with id = ' + data.personId); }); |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论