详解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>
效果显示:
第二种:使用<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事件,所以如果有功能需要的话,后者要比前者灵活些。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。