起因

MVC项目中有数据字典表,定义了多个类型,需要给每个类型做下拉菜单。

不可能每个类型,都敲一个代码,需要做成通用

思路

  1. 利用MVC的部件方式,分别定义Controller,View和Model;
  2. Model的字段需要有:控件名称(WidgetName),数据字典类型(TypeName),选中的值(SelectedValue),数据集(SelectListItems)。需要根据数据字典类型去数据库表中过滤需要的类型,放入数据集中;
  3. View为部分页,Layout=null。

实现

1.Controller定义方法

public virtual ActionResult GetDropdownList(string widgetName, string selectedValue, string typeName)
{
DropdownListModel model = new DropdownListModel();
model.SelectedValue = selectedValue;
model.WidgetName = widgetName;
model.TypeName = typeName;
return View(model);
}

2.Model

public class DropdownListModel
{
/// <summary>
///选中值
/// </summary>
public string SelectedValue; /// <summary>
/// 控件名称
/// </summary>
public string WidgetName; /// <summary>
/// 值类型
/// </summary>
public string TypeName; /// <summary>
/// 状态列表SelectListItems
/// </summary>
public IList<SelectListItem> StateSelectListItems
{
get
{
IList<SelectListItem> selectListItems = new List<SelectListItem>(); IEnumerable<AttrInfo> attrList = WMFactory.Attr.FindByConditions(null, f => f.Code == TypeName); if (attrList.Count() > 0)
{
Guid attrId = attrList.First().Id;
IEnumerable<AttrEnumInfo> enumList = WMFactory.AttrEnum.FindByConditions(null, f => f.AttrId == attrId); foreach (AttrEnumInfo attrEnum in enumList)
{
SelectListItem selectListItem = new SelectListItem();
selectListItem.Value = attrEnum.AttrValue;
selectListItem.Text = attrEnum.AttrText;
selectListItems.Add(selectListItem);
}
} return selectListItems;
}
}
}

3.View

@{
Layout = null;
}
@model ZPS.FX.CRM.WebUI.Areas.ManageCenter.Models.Common.ProductTypeDropdownListModel
@if (!string.IsNullOrEmpty(Model.WidgetName))
{
//指定控件名称
@Html.DropDownListFor(m => m.SelectedValue, Model.StateSelectListItems, new { @id = Model.WidgetName, @Name = Model.WidgetName.Replace("_", "."), @class = "form-control" })
}
else
{
//没有指定控件名称
@Html.DropDownListFor(m => m.SelectedValue, Model.StateSelectListItems, new { @class = "form-control" })
}

使用方式

<div class="col-sm-4">
@Html.Action("GetDropdownList", "Common", new { widgetName = "BizDistrict_Type", selectedValue = (Model == null || Model.BizDistrict == null) ? "" : Model.BizDistrict.Type, typeName = "BizDistrictType" })
</div>

MVC创建通用DropdownList的更多相关文章

  1. 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理

    利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理   2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论: ...

  2. Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址?

    Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址? 访问URL:  http://localhost:8090/firstapp/login 在eclipse集成的 ...

  3. MVC创建XML,并实现增删改

    原文:MVC创建XML,并实现增删改 如果创建如下的XML: <?xml version="1.0" encoding="utf-8" standalon ...

  4. ASP.NET MVC创建的网站

    ASP.NET MVC创建的网站   最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...

  5. 【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)

    HTTP is not just for serving up web pages. It's also a powerful platform for building APIs that expo ...

  6. 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  7. 使用 ASP.NET Core MVC 创建 Web API(五)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  8. 使用 ASP.NET Core MVC 创建 Web API(二)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 六.添加数据库上下文 数据库上下文是使用Entity Framewor ...

  9. 使用 ASP.NET Core MVC 创建 Web API(三)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 十 ...

随机推荐

  1. Python正则匹配多行,多个数据

    最近用Python做一个crawler工具的时候,发现用一个正则表达式可以匹配到个数据的时候用match.group()只能打印出第一个数据,其它数据不能打印出来.最后找到解决方法,现在记录一下,直接 ...

  2. 替换SQL Server字段中的换行符,回车符

    replace(string_expression , string_pattern , string_replacement) 第一个参数:要查找的字段. 第二个参数:要查找的字符. 第三个参数:要 ...

  3. 搜索(DLX重复覆盖模板):HDU 2295 Radar

    Radar Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. 基于Noootes/Dooomino的文档工作流系统(转)

    (流程样例应用程序终于整理上传好可供下载了http://download.csdn.net/download/starrow/8422299) 上文分析了我们的流程配置使用三类对象,分别对应三类文档: ...

  5. Ext.Net中的Task控件的使用

    在用到Ext.Net中的Task控件的时候,写了一下基本的使用方法: 控件是在TaskManager里面的Tasks下面的Task 此控件的常用属性有,TaskID.Interval(设置间隔时间). ...

  6. 连续使用两次fread 错误和fread返回值

    今天在写一个代码,要把一帧的buffer读入到文件,因为有NEON和OpenCL两种不同的实现所以需要读取文件两次,代码如下: FILE *file; ; INTER_BLOCK_SIZE_GPU_R ...

  7. 获得URl信息

      public class GetUrlInfo {     public static void printfInfo(URL url)throws Exception     {         ...

  8. Yii快速入门教程

    Ⅰ.基本概念一.入口文件入口文件内容:一般格式如下:<?php$yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置$config ...

  9. Shell if else语句

    if 语句通过关系运算符判断表达式的真假来决定执行哪个分支.Shell 有三种 if ... else 语句: if ... fi 语句: if ... else ... fi 语句: if ... ...

  10. Intellij IDEA调试

    这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 ...