Javascript 将旧ASP.NET应用程序中的ExtJS从2.3升级到6
正在寻求帮助。TLDR版本:我们有一个利用ExtJS 2.3的ASP.NET web应用程序,我们希望升级到当前的ExtJS版本。试着让我了解我们的目的 现在了解详情。我会先说我不是ExtJS和.NET开发方面的专家。事实上,对于web开发,我几乎是一个新手,所以请原谅我对术语的错误解释或误用。我的团队正在我们公司多年前开发的“定制”框架上开发一个web应用程序。它基于一些可重新运行的代码生成工具,这些工具获取xml模板并输出必要的代码文件。我们的项目是一个ASP.NET MVP应用程序,它使用.aspx页面和NHibernate进行ORM。我们的UI是从ExtJS创建的,控件在每个页面的.js文件中定义,然后在.aspx页面中“组装”。codebehind包含利用C#代码演示者的web方法。我已经包括了一个片段来演示我下面要说的内容 .aspx页面:Javascript 将旧ASP.NET应用程序中的ExtJS从2.3升级到6,javascript,asp.net,extjs,Javascript,Asp.net,Extjs,正在寻求帮助。TLDR版本:我们有一个利用ExtJS 2.3的ASP.NET web应用程序,我们希望升级到当前的ExtJS版本。试着让我了解我们的目的 现在了解详情。我会先说我不是ExtJS和.NET开发方面的专家。事实上,对于web开发,我几乎是一个新手,所以请原谅我对术语的错误解释或误用。我的团队正在我们公司多年前开发的“定制”框架上开发一个web应用程序。它基于一些可重新运行的代码生成工具,这些工具获取xml模板并输出必要的代码文件。我们的项目是一个ASP.NET MVP应用程序,它使用
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Entity.aspx.cs" Inherits="View.Example.EntityView" MasterPageFile="~/MasterPages/Content.Master" %>
<asp:Content ID="Content1" runat="server">
<script language="javascript" type="text/javascript" src="~/Scripts/ext-2.2.1/ext-all.js"></script>
<script language="javascript" type="text/javascript" src="<%=ResolveUrl("~/Scripts/Factory/Example/Entity.js")%>"></script>
<script language="javascript" type="text/javascript">
var localConfig = new panelConfig();
localConfig.applyExtendedConfig('default_page');
localConfig.addItem(new Ext.grid.GridPanel(pageConfigs.default_page_ManageEntity));
localConfig.addItem(
new Ext.form.Hidden({
id: 'ManageEntityGrid_Rows'
}));
var default_page = localConfig.createExt();
default_page.on('render', default_page_OnShow, default_page, { single: true });
</script>
</asp:Content>
.aspx.cs文件:
[WebMethod()]
public static ExtJSGridData GetManageEntity(PageProxyArgs args)
{
var watch = new Stopwatch();
watch.Start();
try
{
var data = new ExtJSGridData();
var criteria = GetManageEntityQuery(args);
criteria.SetFirstResult(args.Start).SetMaxResults(args.Limit);
data.Results = GetDataManageEntity(args.RecordId, criteria);
criteria.SetFirstResult(0).SetMaxResults(RowSelection.NoValue);
criteria.ClearOrders();
data.Total = criteria.SetProjection(Projections.CountDistinct("Id")).UniqueResult<int>();
data.UserUiStateSaved = UserUiStateHelper.SaveUserUiStateInTransaction(args.UserUiState);
watch.Stop();
PageLogHelper.CurrentLog.ServerTime = watch.ElapsedMilliseconds;
return data;
}
catch (Exception ex)
{
LogManager.GetLogger((MethodBase.GetCurrentMethod().DeclaringType)).Error(ex);
ErrorHandler.LogError(ex);
throw;
}
}
private static IList GetDataManageEntity(int id, ICriteria criteria)
{
var list = criteria.List<Model.BusinessObjects.Entity>();
var jsonList = Model.BusinessObjects.Entity.ToJSON(list);
return jsonList;
}
private static ICriteria GetManageEntityQuery(PageProxyArgs args)
{
ICriteria criteria = StaticPresenter.GetEntity();
var helper = new GridFilterHelper(criteria, args, _dManageEntityLookupSortInfo);
helper.ApplyFilterMap(EntityJSON.GetGridFilterMap(criteria, args.Filters));
MapManageEntityFilters(args.Filters, criteria);
helper.ApplyFilters();
if (args.SortInfo == null || string.IsNullOrEmpty(args.SortInfo.FieldName))
return criteria;
IList<IProjection> sortMap = StaticPresenter.GetSortMap_ManageEntity(args.SortInfo.FieldName, args.RecordId, args.ExtraParams, criteria);
if (sortMap == null)
sortMap = EntityJSON.GetSortMap(args.SortInfo.FieldName, criteria);
helper.ApplySort(sortMap);
return criteria;
}
[WebMethod()]
公共静态ExtJSGridData GetManageEntity(PageProxyArgs-args)
{
var watch=新秒表();
watch.Start();
尝试
{
var data=新的ExtJSGridData();
var-criteria=GetManageEntityQuery(args);
criteria.SetFirstResult(args.Start).SetMaxResults(args.Limit);
data.Results=GetDataManageEntity(args.RecordId,条件);
条件.SetFirstResult(0).SetMaxResults(RowSelection.NoValue);
criteria.ClearOrders();
data.Total=criteria.SetProjection(Projections.CountDistinct(“Id”)).UniqueResult();
data.UserUiStateSaved=useruistateheloper.saveuseruistateintersaction(args.UserUiState);
看,停;
PageLogHelper.CurrentLog.ServerTime=watch.ElapsedMilliseconds;
返回数据;
}
捕获(例外情况除外)
{
LogManager.GetLogger((MethodBase.GetCurrentMethod().DeclaringType)).Error(ex);
ErrorHandler.LogError(ex);
投掷;
}
}
私有静态IList GetDataManageEntity(int id,ICriteria标准)
{
var list=criteria.list();
var jsonList=Model.BusinessObjects.Entity.ToJSON(列表);
返回jsonList;
}
专用静态ICriteria GetManagementQuery(PageProxyArgs-args)
{
ICriteria条件=StaticPresenter.GetEntity();
var helper=新的GridFilterHelper(条件、参数、_-dManageEntityLookupSortInfo);
ApplyFilterMap(EntityJSON.GetGridFilterMap(criteria,args.Filters));
MapManagementFilters(args.Filters,条件);
helper.ApplyFilters();
if(args.SortInfo==null | | string.IsNullOrEmpty(args.SortInfo.FieldName))
退货标准;
IList sortMap=StaticPresenter.GetSortMap_ManageEntity(args.SortInfo.FieldName、args.RecordId、args.ExtraParams、criteria);
if(sortMap==null)
sortMap=EntityJSON.GetSortMap(args.SortInfo.FieldName,条件);
ApplySort(sortMap);
退货标准;
}
这就是问题所在。如前所述,我们使用的ExtJS版本是2.3,我们希望升级到当前版本。我已经做了一些谷歌搜索和翻阅sencha文档的初始作业,但有些事情我还不清楚,希望在我开始着手这项工作之前得到解决。我试图在下面概述我的具体问题
首先也是最重要的一点:我们的应用程序的构建方式是否可以使用ExtJS6?我的意思是利用ExtJSAPI在.js文件中定义控件,然后在.NETC#主干上创建UI。根据其他用户的更改说明和问题,很明显在2.3和6之间发生了大量(轻描淡写的)更改。我想我的意思是,根据我读到的内容,你现在似乎可以构建你的整个应用程序,包括ExtJS中的模型和视图(以及控制器?)。这是一个要求,还是我们仍然可以在.NETC#模型和视图之上放置ExtJS控件
作为跟进,我已经看到了有关Sencha CMD的参考资料,用于创建和构建应用程序等。无论发生什么情况,CMD都是必需的吗?或者我们可以像现在这样简单地引用ExtJS库吗
假设问题1的答案是肯定的,这是可能的,下一个明显的问题是:这将需要多少工作?让我们把“很多”的答案弄清楚——我知道。我所知道的是,我们必须更新所有模板以使用新的API语法(new Ext…to Ext.create()等)。我没意见。我想弄明白的是我不知道的。假设我更新了所有语法,我们的应用程序会工作吗?或者为了让它正常工作,我还需要修改/修复其他东西吗
与问题2相关:根据我的阅读,控件的数据存储方式似乎已经改变,它们现在使用ExtJS中定义的模型。这是要求吗?如前所述,我们目前正在aspx.cs文件中使用web方法。我需要在ExtJS中复制我们的C#模型吗
最后,我看到这个问题问了很多,但我似乎找不到一个明确的答案。古典与现代?我通常看到的答案是,modern更倾向于触摸屏和现代浏览器,而classic更倾向于桌面用户。我也在一些地方读到过,现代电脑的可用控件较少。我们的web应用程序是在本地环境下运行的,将来不会移动,这让我认为经典可能是正确的选择?我想我只是想知道技术上的区别是什么
我肯定有些东西我甚至不知道我错过了。欢迎您提供任何反馈。这是可能的,但您必须大量书写。就在三周前,我不得不利用3.4 AS
[WebMethod()]
public static ExtJSGridData GetManageEntity(PageProxyArgs args)
{
var watch = new Stopwatch();
watch.Start();
try
{
var data = new ExtJSGridData();
var criteria = GetManageEntityQuery(args);
criteria.SetFirstResult(args.Start).SetMaxResults(args.Limit);
data.Results = GetDataManageEntity(args.RecordId, criteria);
criteria.SetFirstResult(0).SetMaxResults(RowSelection.NoValue);
criteria.ClearOrders();
data.Total = criteria.SetProjection(Projections.CountDistinct("Id")).UniqueResult<int>();
data.UserUiStateSaved = UserUiStateHelper.SaveUserUiStateInTransaction(args.UserUiState);
watch.Stop();
PageLogHelper.CurrentLog.ServerTime = watch.ElapsedMilliseconds;
return data;
}
catch (Exception ex)
{
LogManager.GetLogger((MethodBase.GetCurrentMethod().DeclaringType)).Error(ex);
ErrorHandler.LogError(ex);
throw;
}
}
private static IList GetDataManageEntity(int id, ICriteria criteria)
{
var list = criteria.List<Model.BusinessObjects.Entity>();
var jsonList = Model.BusinessObjects.Entity.ToJSON(list);
return jsonList;
}
private static ICriteria GetManageEntityQuery(PageProxyArgs args)
{
ICriteria criteria = StaticPresenter.GetEntity();
var helper = new GridFilterHelper(criteria, args, _dManageEntityLookupSortInfo);
helper.ApplyFilterMap(EntityJSON.GetGridFilterMap(criteria, args.Filters));
MapManageEntityFilters(args.Filters, criteria);
helper.ApplyFilters();
if (args.SortInfo == null || string.IsNullOrEmpty(args.SortInfo.FieldName))
return criteria;
IList<IProjection> sortMap = StaticPresenter.GetSortMap_ManageEntity(args.SortInfo.FieldName, args.RecordId, args.ExtraParams, criteria);
if (sortMap == null)
sortMap = EntityJSON.GetSortMap(args.SortInfo.FieldName, criteria);
helper.ApplySort(sortMap);
return criteria;
}