• ASP.NET MVC 下拉框的传值的两种方式


    以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了。现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的。

    第一种:使用DropDownList

    控制器代码:

     1     public ActionResult Index()  
     2     {  
     3       
     4         //1.1查询YzSeriesEntity的数据  
     5         List<Model.YzSeriesEntity> seriesList = seriesBLL.LoadEnities().ToList();  
     6         //1.2将YzSeriesEntity的数据封装到 SelectList中,制定要生成下拉框选项的value和text属性  
     7         SelectList selList1 = new SelectList(seriesList, "SerialName", "SerialName");  
     8       
     9         //2.1查询YzDivisionEntity的数据  
    10         List<Model.YzDivisionEntity> divisionList = divisionBLL.LoadEnities().ToList();  
    11         //2.2讲YzDivisionEntity的数据封装到 SelectList中,制定要生成下拉框选项的value和text属性  
    12         SelectList selList2 = new SelectList(divisionList, "DivisionName", "DivisionName");  
    13       
    14         //3.调用Selectlist的As方法,自动生成SelectListItem集合,并存入ViewBag中  
    15         ViewBag.selList1 = selList1.AsEnumerable();  
    16         ViewBag.selList2 = selList2.AsEnumerable();  
    17          
    18         return View();  
    19     }  

    视图代码:

     1     <!-------------- 添加对话框-------------->  
     2     <div id="addDiv">  
     3         @using (Ajax.BeginForm("Add", new AjaxOptions() { OnSuccess = "afterAdd" }))  
     4         {  
     5             <table>  
     6                 <tr>  
     7                     <td>编号:</td>  
     8                     <td>  
     9                         @Html.TextBox("StaffID")  
    10                     </td>  
    11                 </tr>  
    12                 <tr>  
    13                     <td>姓名:</td>  
    14                     <td>@Html.TextBox("StaffName")</td>  
    15                 </tr>  
    16                 <tr>  
    17                     <td>性别:</td>  
    18                     <td>  
    19                         <input type="radio" id="GenderM" name="Sex" value="" />20                         <input type="radio" id="GenderF" name="Sex" value="" checked />21                     </td>  
    22                 </tr>  
    23                 <tr>  
    24                     <td>所在系列:</td>  
    25                     <td>  
    26                         @Html.DropDownList("SerialName", ViewBag.selList1 as IEnumerable<SelectListItem>)  
    27                     </td>  
    28                 </tr>  
    29                 <tr>  
    30                     <td>科室或年级组:</td>  
    31                     <td>  
    32                         @Html.DropDownList("DivisionName", ViewBag.selList2 as IEnumerable<SelectListItem>)  
    33                     </td>  
    34                 </tr>  
    35                 <tr>  
    36                     <td>任课学科:</td>  
    37                     <td>  
    38                         @Html.TextBox("Subjects")  
    39                     </td>  
    40                 </tr>  
    41                 <tr>  
    42                     <td>聘任日期:</td>  
    43                     <td>  
    44                         @Html.TextBox("EngageDate")  
    45                     </td>  
    46                 </tr>  
    47                 <tr>  
    48                     <td>参加工作日期:</td>  
    49                     <td>  
    50                         @Html.TextBox("WorkDate")  
    51                     </td>  
    52                 </tr>  
    53                 <tr>  
    54                     <td>职称:</td>  
    55                     <td>  
    56                         @Html.TextBox("jobQualification")  
    57                     </td>  
    58                 </tr>  
    59                 <tr>  
    60                     <td>身份证号:</td>  
    61                     <td>  
    62                         @Html.TextBox("IdentityCard")  
    63                     </td>  
    64                 </tr>  
    65       
    66             </table>  
    67         }  
    68       
    69     </div>  

    效果显示:

    第二种:使用<select></select>

    视图代码:

    1     <!--选择权重-->  
    2     <div>  
    3         <span>@Html.Label("请选择权重:")</span>  
    4         <span>  
    5             <select id="cc" class="easyui-combobox" name="dept"  
    6                    data-options="valueField:'ID',textField:'Weight',url:'/SettingEvaluation/ListOption'" />  
    7         </span>  
    8     </div>  

    控制器代码:

     1     //下拉框对应的列表  
     2     public ActionResult ListOption()  
     3     {  
     4         //2.1.查询出weight实体,并将其转成DTO类型  
     5         List<Model.DTO.YzWeightEntityDTO> weightList =  
     6             weightBLL.LoadEnities().ToList().Select(s => s.ToDto()).ToList();  
     7         //2.2返回json  
     8         return Json(weightList, JsonRequestBehavior.AllowGet);  
     9       
    10     }   

    效果显示:

    总结:

        两种传值方式的比较:

        第一种是控制器通过ViewBag传值,前台通过@Html.DropDownList接收;第二种是通过Json传值,前台通过url绑定 valueField和textField的值来获取数据。两者没有什么太大的不同,但是由于传值使用<select></select>接收的,使用的是HTML标签,所以还可以用来绑定其他的js事件,所以如果有功能需要的话,后者要比前者灵活些。

  • 相关阅读:
    C#中 @ 的用法
    ASP.NET页面间传值
    ASP.NET中常用的文件上传下载方法
    把图片转换为字符
    把图片转换为字符
    JavaScript 时间延迟
    Using WSDLs in UCM 11g like you did in 10g
    The Definitive Guide to Stellent Content Server Development
    解决RedHat AS5 RPM安装包依赖问题
    在64位Windows 7上安装Oracle UCM 10gR3
  • 原文地址:https://www.cnblogs.com/fjptwwf/p/5378202.html
Copyright © 2020-2023  润新知