@Html.DropDownList不更新回传原数据更新则回传新数据

通过@Html.DropDownList非强类型进行BookType的选择,初始显示原来的BookType 值,通过点选下拉列表再点击“更新”按钮进行数据的更新,即“不更新回传原数据、更新则回传新数据”。

bookindex.cshtml 部分代码:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DropDownList("detail.booktype", db.bll.listHelper.getBookType(),item.BookType,new { style = "width=80px" })

        </td>
    </tr>
}

bookindex.cshtml 效果图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201119164923208.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1YW54aWFuZzAx,size_16,color_FFFFFF,t_70#pic_center)

当不改变(即不重新选择)BookType 的值时,此时提交到后端的结果为空,需要不改变时回传原值则要改变代码。

改进代码,通过在bookindex.cshtml 的 getBookType() 方法中回传初始值,在listHelper.cs的 getBookType(string oldValue) 中增加DropdownList中Selected 的判断。

改进的bookindex.cshtml部分代码如下所示:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DropDownList("detail.booktype", db.bll.listHelper.getBookType(item.BookType),new { style = "width=80px" })

        </td>
    </tr>
}

listHelper.cs 中的代码如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace db.bll
{
    public class listHelper
    {
        public static List<SelectListItem> getCity() {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "南京",Value="nj"});
            list.Add(new SelectListItem() { Text = "苏州",Value="sz"});
            list.Add(new SelectListItem() { Text = "泰州",Value="tz"});
            return list;
        }
        public static List<SelectListItem> getSex()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "男", Value = "F" });
            list.Add(new SelectListItem() { Text = "女", Value = "M" });
            list.Add(new SelectListItem() { Text = "保密", Value = "null" });
            return list;
        }
        public static List<SelectListItem> getHobby()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "读书", Value = "readBook" });
            list.Add(new SelectListItem() { Text = "跑步", Value = "run" });
            list.Add(new SelectListItem() { Text = "看电影", Value = "film" });
            return list;
        }
        public static List<SelectListItem> getBookType()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "计算机", Value = "计算机" });
            list.Add(new SelectListItem() { Text = "外语", Value = "外语" });
            list.Add(new SelectListItem() { Text = "艺术", Value = "艺术" });
            return list;
        }
        public static List<SelectListItem> getBookType(string oldValue)
        {
            oldValue = oldValue == null ? "" : oldValue;
            List<string> selectedList = oldValue.Split(',').ToList<string>();
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "计算机", Value = "计算机" });
            list.Add(new SelectListItem() { Text = "外语", Value = "外语" });
            list.Add(new SelectListItem() { Text = "艺术", Value = "艺术" });

            foreach (var item in list) {
                if (selectedList.Contains(item.Value)) {
                    item.Selected = true;
                }
            }
            return list;
        }
        public static List<SelectListItem> getBookTag()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "低折扣", Value = "低折扣" });
            list.Add(new SelectListItem() { Text = "畅销书", Value = "畅销书" });
            list.Add(new SelectListItem() { Text = "促销书", Value = "促销书" });
            return list;
        }
        public static List<SelectListItem> getBookTag(string oldValue)
        {
            oldValue = oldValue == null ? "" : oldValue;
            List<string> selectedList = oldValue.Split(',').ToList<string>();
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "低折扣", Value = "低折扣" });
            list.Add(new SelectListItem() { Text = "畅销书", Value = "畅销书" });
            list.Add(new SelectListItem() { Text = "促销书", Value = "促销书" });

            foreach (var item in list)
            {
                if (selectedList.Contains(item.Value))
                {
                    item.Selected = true;
                }
            }
            return list;
        }
    }
}

改进后的程序即可完全实现”不更新回传原数据、更新则回传新数据“的功能。

daixiangcn CSDN认证博客专家 后端开发工程师 产品体验官
中国公民,中共预备党员,CSDN博客专家,本科大四在读。江苏省第四届“互联网+”大学生创新创业大赛二等奖获得者,第二届、第三届微信小程序应用开发大赛全国三等奖、华东赛区二等奖项目作者,微信小程序《约车吗》、《庆云慈善会》、《锋云速检》项目工程师。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页