起因

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. 查找mysql数据文件存放路径

    show variables like 'datadir%'; show variables当前的会话,是系统参数 是静态 show global variables全局 show status是系统 ...

  2. oracle 10g WMSYS.WM_CONCAT 函數的用法

    select t.rank, t.Name from t_menu_item t; 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SC ...

  3. xcode duplicate symbol _GAD_MD5 解决方法

    添加了mobi的广告平台后,在Device状态打包时,出现此错误. duplicate symbol _GAD_MD5 in: 解决方法: Targets ->Build Setting  中设 ...

  4. Reward

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

  5. 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题

    前几天同事做了一个效果,希望在原本使用了遮罩组件 Mask 的技能图标(让技能图标变成圆形)上在添加一个置灰的功能,但问题来了:因为是动态根据游戏中玩家的条件才动态置灰,以修改 Mask 下子节点 I ...

  6. Java---俄罗斯方块小游戏

    去年就已经学了这个技术了,一直没去写,现在抽个时间写了个俄罗斯方块游戏. 只有简单的新游戏,暂停,继续,积分功能.简单的实现了俄罗斯的经典功能. 不介绍了,有兴趣的自己运行一下,后面贴出了图片. 代码 ...

  7. 点分治练习: boatherds

    [题面] 求一颗树上距离为K的点对是否存在 输入数据 n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接下来m行每行询问一个K 输出数据 对于每个K每行输出一个答案,存在输出“AYE ...

  8. Keepass 2.x 的一些新发现

    近期将 Keepass 从 1.22 升级到了 2.24,经过一番折腾,发现有了很多新功能,也有一些之前被忽视的地方.再一次感叹这个软件的强大,向作者的无私奉献致敬! 其实,这个软件一直有 1.x 和 ...

  9. Bzoj 1532: [POI2005]Kos-Dicing 二分,网络流

    1532: [POI2005]Kos-Dicing Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1373  Solved: 444[Submit][St ...

  10. linux查看服务器型号

    dmidecode | grep "Product";