欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-21 12:26:49
以前使用webform变成时,下拉框传值只需直接在后台绑定代码就可以了。现在我们来看看在mvc中dropdownlist是如果和接受从controller传过来的值的。 第一种:使用...

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

第一种:使用dropdownlist

控制器代码:  

    public actionresult index()
    {
 
      //1.1查询yzseriesentity的数据
      list<model.yzseriesentity> serieslist = seriesbll.loadenities().tolist();
      //1.2将yzseriesentity的数据封装到 selectlist中,制定要生成下拉框选项的value和text属性
      selectlist sellist1 = new selectlist(serieslist, "serialname", "serialname");
 
      //2.1查询yzdivisionentity的数据
      list<model.yzdivisionentity> divisionlist = divisionbll.loadenities().tolist();
      //2.2讲yzdivisionentity的数据封装到 selectlist中,制定要生成下拉框选项的value和text属性
      selectlist sellist2 = new selectlist(divisionlist, "divisionname", "divisionname");
 
      //3.调用selectlist的as方法,自动生成selectlistitem集合,并存入viewbag中
      viewbag.sellist1 = sellist1.asenumerable();
      viewbag.sellist2 = sellist2.asenumerable();
      
      return view();
    }
  

视图代码:  

    <!-------------- 添加对话框-------------->
    <div id="adddiv">
      @using (ajax.beginform("add", new ajaxoptions() { onsuccess = "afteradd" }))
      {
        <table>
          <tr>
            <td>编号:</td>
            <td>
              @html.textbox("staffid")
            </td>
          </tr>
          <tr>
            <td>姓名:</td>
            <td>@html.textbox("staffname")</td>
          </tr>
          <tr>
            <td>性别:</td>
            <td>
              <input type="radio" id="genderm" name="sex" value="男" />男
              <input type="radio" id="genderf" name="sex" value="女" checked />女
            </td>
          </tr>
          <tr>
            <td>所在系列:</td>
            <td>
              @html.dropdownlist("serialname", viewbag.sellist1 as ienumerable<selectlistitem>)
            </td>
          </tr>
          <tr>
            <td>科室或年级组:</td>
            <td>
              @html.dropdownlist("divisionname", viewbag.sellist2 as ienumerable<selectlistitem>)
            </td>
          </tr>
          <tr>
            <td>任课学科:</td>
            <td>
              @html.textbox("subjects")
            </td>
          </tr>
          <tr>
            <td>聘任日期:</td>
            <td>
              @html.textbox("engagedate")
            </td>
          </tr>
          <tr>
            <td>参加工作日期:</td>
            <td>
              @html.textbox("workdate")
            </td>
          </tr>
          <tr>
            <td>职称:</td>
            <td>
              @html.textbox("jobqualification")
            </td>
          </tr>
          <tr>
            <td>身份证号:</td>
            <td>
              @html.textbox("identitycard")
            </td>
          </tr>
 
        </table>
      }
 
    </div>

效果显示:

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

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

视图代码:    

    <!--选择权重-->
    <div>
      <span>@html.label("请选择权重:")</span>
      <span>
        <select id="cc" class="easyui-combobox" name="dept"
            data-options="valuefield:'id',textfield:'weight',url:'/settingevaluation/listoption'" />
      </span>
    </div>

控制器代码:        

    //下拉框对应的列表
    public actionresult listoption()
    {
      //2.1.查询出weight实体,并将其转成dto类型
      list<model.dto.yzweightentitydto> weightlist =
        weightbll.loadenities().tolist().select(s => s.todto()).tolist();
      //2.2返回json
      return json(weightlist, jsonrequestbehavior.allowget);
 
    } 

效果显示:

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

总结:

两种传值方式的比较:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。