Asp.Net MVC 大量相似界面的解决方案(三)—— 界面显示模型

我们以简单的网格展示界面进行说明,界面包括个区域:

  • 查询条件区域:显示网格界面的查询条件,查询条件可能是文本框,也可能是下拉框或者日期框。
  • 功能按钮区域:显示界面中的操作按钮,一个功能按钮可以认为执行一个js函数。
  • 数据网格:以网格形式显示数据,上面的例子说明了数据网格的结构,包括若干列,每列有标题,相关字段名等等。

页面模型如下:

using jiagoushi.cn.MVCUI.models.Common;
using System.Collections.Generic;

namespace jiagoushi.cn.MVCUI.models.GridPage
{
    public class GridPageModel
    {
        public string PageTitle { get; set; }

        public string ApiUrl { get; set; }

        public List<SearchFilter> FilterControls { get; set; }

        public List<FunctionButton> Buttons { get; set; }

        public List<GridColumn> Columns { get; set; }

        public GridPageModel()
        {
            FilterControls = new List<SearchFilter>();

            Buttons = new List<FunctionButton>();

            Columns = new List<GridColumn>();
        }
    }
}

这是个简化的页面模型,包括页面的标题、获取数据的Url,以及上面所提到的三个区域。

查询控件的模型如下:

using System.Collections.Generic;

namespace jiagoushi.cn.MVCUI.models.Common
{
    public class SearchFilter
    {
        /// <summary>
        /// 
        /// </summary>
        public string LableText { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string Key { get; set; }

        /// <summary>
        /// 查询控件类型
        /// </summary>
        public string ControlType { get; set; }

        /// <summary>
        /// 是否区间查询
        /// </summary>
        public bool IsRange { get; set; }

        /// <summary>
        /// 查询条件不能为空
        /// </summary>
        public bool NotNull { get; set; }

        /// <summary>
        /// 级联控件的下级控件的Key值
        /// </summary>
        public List<string> SubControls { get; set; }

        /// <summary>
        /// 级联控件的上级控件
        /// </summary>
        public string CasUpControl { get; set; }
    }
}

上面是简化的查询条件控件,没有包括级联等的定义,也没有包括获取下拉框数据的Url等的定义。

功能按钮的定义:

namespace jiagoushi.cn.MVCUI.models.Common
{
public class FunctionButton
{
/// <summary>
/// 功能按钮得名称
/// </summary>
public string ButtonName { get; set; }

    /// <summary>
    /// 显示文本
    /// </summary>
    public string DisplayText { get; set; }

    /// <summary>
    /// 功能按钮得执行类型,比如打开页面,执行导出,执行存储过程等等
    /// </summary>
    public string CommandType { get; set; }

    /// <summary>
    /// 参数(字典语句)
    /// </summary>
    public string DicString { get; set; }
}

}

网格列的定义:

using System.Collections.Generic;

namespace jiagoushi.cn.MVCUI.models.GridPage
{
    public class GridColumn
    {
        public GridColumn()
        {
            SubColumns = new List<GridColumn>();
        }
        /// <summary>
        /// 列显示文本
        /// </summary>
        public string ColumnDisplayText { get; set; }
        /// <summary>
        /// 列关键字
        /// </summary>
        public string ColumnKey { get; set; }
        /// <summary>
        /// 列宽
        /// </summary>
        public string ColumnWidth { get; set; }
        /// <summary>
        /// 是否固定列
        /// </summary>
        public bool IsFixed { get; set; }

        /// <summary>
        /// 是否合计
        /// </summary>
        public bool IsSum { get; set; }
        /// <summary>
        /// 是否排序
        /// </summary>
        public bool IsOrderField { get; set; }
        /// <summary>
        /// 用于多级表头
        /// </summary>
        public List<GridColumn> SubColumns { get; set; }

        /// <summary>
        /// 是否合并
        /// </summary>
        public bool IsMerged { get; set; }

        /// <summary>
        /// 相关的合并列
        /// </summary>
        public string MergedColumns { get; set; }

        /// <summary>
        /// 多级表头父列
        /// </summary>
        public string ParentColumnKey { get; set; }

        /// <summary>
        /// 网格是否可编辑
        /// </summary>
        public bool IsEditable { get; set; }

        /// <summary>
        /// 控件类型
        /// </summary>
        public string ControlType { get; set; }

        /// <summary>
        /// 数据类型
        /// </summary>
        public int DataType { get; set; }

        /// <summary>
        /// 不能为空
        /// </summary>
        public bool NotNull { get; set; }
    }
}

到此,我们完成了页面的基本模型的定义,下一步,可以将模型转换为页面。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容