以前使用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>

效果显示:

 

第二种:使用<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);
 
    } 

效果显示:

    

总结:

两种传值方式的比较:

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

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