首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MVC4 Html.DropDownListFor如何列出要编辑的选定项目

MVC4 Html.DropDownListFor如何列出要编辑的选定项目
EN

Stack Overflow用户
提问于 2015-01-28 13:38:57
回答 2查看 5.3K关注 0票数 1

我似乎找不到任何适合我的情况的示例(使用MVC4,只是使用存储过程直接从数据库获取数据,而不使用实体框架),将DropDownListFor的选定值设置为数据库中为该特定项列出的当前选定值)。

更具体地说,这里是我的代码的摘录(希望足以隔离这个无知的新手做错了什么)-希望能帮助其他正在努力将DropDownListFor中列出的默认值设置为正在编辑的数据库中已存储的值的人。

控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[HttpGet]
    [Authorize] 
    public ActionResult Edit(string id, string ProdName, UpdateProductModel updateproductmodel)
    {
        int ProductID = Convert.ToInt32(id);
        ViewBag.ProdName = ProdName;
        SqlConnection cn = new SqlConnection(@"Data Source=D;User ID=user;Password=pswrd;Initial Catalog=cat");
        SqlCommand cmd = new SqlCommand("sp_GetProduct", cn);
        cn.Open();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter("@ProductID", ProductID));

        SqlDataReader dr = cmd.ExecuteReader();
        if (dr == null)
        {
            return HttpNotFound();
        }
        if (dr.Read())
        {
            DataSet dst = updateproductmodel.GetProducts_ByTypes();
            ViewBag.UpProdTypes = dst.Tables[0];

            List<SelectListItem> items = new List<SelectListItem>();

            foreach (System.Data.DataRow dru in ViewBag.UpProdTypes.Rows)
            {
                items.Add(new SelectListItem { Selected = (Convert.ToInt32(@dru["ProdTypeID"].ToString()) == Convert.ToInt32(dr["ProdTypeID"].ToString())), Text = @dru["ProdTypeDescr"].ToString(), Value = @dru["ProdTypeID"].ToString() });

            }

            ViewBag.UpProdTypes = items;

             if (Request.Cookies["OIDCookie"].Value == dr["OrganisationID"].ToString())
        {

            updateproductmodel.ProductID = Convert.ToInt32(dr["ProductID"].ToString());
            updateproductmodel.ProdTypeID = Convert.ToInt32(dr["ProdTypeID"].ToString());
            updateproductmodel.ProdTypeDescr = dr["ProdTypeDescr"].ToString();
            updateproductmodel.ProductName = dr["ProductName"].ToString();
            updateproductmodel.ProductDescription = dr["ProductDescription"].ToString();
            updateproductmodel.ProductComments = dr["ProductComments"].ToString();
            updateproductmodel.ProductProfileLocation = dr["ProductProfileLocation"].ToString();
            updateproductmodel.ProductProfileName = dr["ProductProfileName"].ToString();
            updateproductmodel.ProductMIMEType = dr["ProductMIMEType"].ToString();
            updateproductmodel.ProductSerialNumber = dr["ProductSerialNumber"].ToString();
            updateproductmodel.UpdateBy = Convert.ToInt32(Request.Cookies["UIDCookie"].Value);
        }
             else
             {
                 return RedirectToAction("Index", "Home");
             }
        }
        else
        {
            //dr.Close();
        }
        //dr.Close();
        //cn.Close();
        return View(updateproductmodel);
    }

当我逐步完成这一步时,有一个阶段是Convert.ToInt32(dr"ProdTypeID".ToString()) -

(这是之前在数据库中为特定产品捕获的现有ProductTypeID的值)

是3(泵)和Convert.ToInt32(@dru"ProdTypeID".ToString() -

(这是一个表中产品类型的值,该表列出了在DropDownListFor中生成列表所需的各种产品类型)

也是3(泵)。

我假设这会导致ID为3的相关产品类型描述(即" PUMPS ")被设置为将在编辑视图中的DropDownListFor中显示的选定的缺省值-但是相反,只显示列表中的第一种类型,而没有选择的生效-并且当更新时,存储在DB中的值自然被设置为列表中的第一种类型的值(碰巧是分配器-而不是所需的泵-如果最初存在数据捕获错误,则显然可以改变为分配器-但显然,如果没有错误,它应该保持不变)。

视图(好吧,我假设这就是它所需要的全部)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="editor-label">      
        @Html.LabelFor(model => model.ProdTypeID)             
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ProdTypeDescr) <br />

        @Html.DropDownListFor(model => model.SelectedProdTypeID, (IEnumerable<SelectListItem>)ViewBag.UpProdTypes, new { @class="form-control"})

        @Html.ValidationMessageFor(model => model.ProdTypeID)
    </div>  

我刚刚在DropDownListFor之前的视图中显示了Product Type值,以便进行简单的比较。每个视图中显示的值是否不同-一旦我获得DropDownListFor中列出的正确默认值,它显然就会被删除。

我已经注释掉了控制器操作底部的各种关闭,因为收到了需要打开连接的错误-在哪里以及什么时候关闭连接是安全的?(我显然不想积累从未关闭的开放连接)。

我非常感谢任何在编辑特定产品时将DropDownListFor中的默认选择设置为数据库中捕获的特定产品的现有值的建议。

感谢您与一位一无所知的新手分享您的专业知识。

艾伦

EN

回答 2

Stack Overflow用户

发布于 2015-01-28 14:16:06

使用SelectList很可能你需要通过以下方式使用它的this contructor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach (System.Data.DataRow dru in ViewBag.UpProdTypes.Rows)
{
  items.Add(new SelectListItem {  
                                Text = @dru["ProdTypeDescr"].ToString(),
                                Value = @dru["ProdTypeID"].ToString() 
                               });
}

ViewBag.UpProdTypes = new SelectList(items,"Value","Text", "3");

现在,在下拉列表中,您将在视图中选择项,其值为3,表示ProdTypeID 3。

在视图中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @Html.DropDownListFor(model => model.SelectedProdTypeID,
                                ViewBag.UpProdTypes as SelectList, 
                                new { @class="form-control"})
票数 1
EN

Stack Overflow用户

发布于 2016-05-05 04:17:04

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public ActionResult Create()
    {
        ViewBag.int_usertype_id = new SelectList(db.tbl_usertype.Where(x => x.int_usertype_id != 4).ToList(), "int_usertype_id", "Str_usertype");
        return View();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28193683

复制
相关文章
matplotlib:如何选定颜色
此颜色选择方式是由正则匹配的 C[0-9] 来确定颜色。只要是支持这种颜色的地方都可以通过这种方式来设置,而且也可以作为 matplotlib.Axes.plot 的单字符颜色。
bugsuse
2020/04/21
1.1K0
matplotlib:如何选定颜色
Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图
在本节中,您将开始修改为电影控制器所新加的操作方法和视图。然后,您将添加一个自定义的搜索页。 在浏览器地址栏里追加/Movies, 浏览到Movies页面。并进入编辑(Edit)页面。 Edit(编辑
葡萄城控件
2018/01/10
4.3K0
Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图
如何控制Ansible Playbook的执行顺序、运行选定的剧本资源
在处理大型或复杂的剧本时,如果只希望运行部分剧本或部分任务。可以将标签应用于可能要跳过或运行的特定资源。
山河已无恙
2023/01/30
2.7K0
中途接手的项目,实施顾问要如何应对?
想要从头进入一个项目,中途不被调走,一直只做这个项目,从头做到尾,这样的项目当然做起来很爽,会有一种一切尽在掌握的感觉,可惜完美是暂态,残缺才是常态,大部分的项目,不是你从中途进入,就是你从中途退出,或者你既从中途进入也从中途退出。
SAP斯凯普斯
2020/07/17
5010
如何在 Linux 上列出磁盘?
在 Linux 系统中,了解和管理磁盘是非常重要的。无论是查看可用的磁盘空间、挂载新的磁盘还是调整分区大小,都需要准确地列出系统中的磁盘信息。本文将详细介绍如何在 Linux 上列出磁盘,以便您可以轻松地进行磁盘管理和相关操作。
网络技术联盟站
2023/06/18
5.3K0
如何在 Linux 上列出磁盘?
asp.net mvc4 使用KindEditor文本编辑器
  最近做项目要用文本编辑器,编辑器好多种,这里介绍KindEditor在asp.net mvc4中的使用方法。
阿炬
2019/02/15
9740
asp.net mvc4 使用KindEditor文本编辑器
  最近做项目要用文本编辑器,编辑器好多种,这里介绍KindEditor在asp.net mvc4中的使用方法。   一、准备工作:     1.下载KindEditor.去官网:http://www.kindsoft.net/     2.解压,拷贝到项目中(这里面有些例子,可以先删除掉在拷贝到项目中。)   二、使用步骤:     1.view页面 <script> var editor; KindEditor.ready(function (K) { editor =
阿炬
2018/05/11
1K0
HDFS——如何列出目录下的所有文件
可以用bin/Hadoop fs -ls 来读取HDFS某一目录下的文件列表及属性信息。
星哥玩云
2022/06/30
3.9K0
如何在 Linux 上列出服务?
在 Linux 系统中,服务是在后台运行的程序或进程,用于提供各种功能和服务。在管理和维护 Linux 系统时,了解当前正在运行的服务是非常重要的。本文将介绍如何在 Linux 上列出服务,并提供详细的步骤和示例。
网络技术联盟站
2023/06/19
8300
如何在 Linux 上列出服务?
编码技巧 --- 同步锁对象的选定
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new 出来的普通CLR对象。
Niuery Diary
2023/10/22
1350
编码技巧 --- 同步锁对象的选定
【说站】Python如何列出目录中的所有文件
1、os.listdir()将提供目录中的所有内容,文件和目录。如果只想要文件,可以使用方法过滤os.path。
很酷的站长
2022/11/26
4.5K0
【说站】Python如何列出目录中的所有文件
如何使用 systemctl 命令列出 Linux 中的所有服务
systemctl 命令是 Linux 中用于管理系统和服务配置的工具。您可以使用 systemctl 命令来启动、停止、重新启动、启用、禁用和检查服务的状态。您还可以使用 systemctl 命令来列出所有服务。
用户8418197
2023/09/22
2.5K0
如何在linux中列出所有用户
列出所有Linux用户的两种方法 使用 /etc/passwd 文件列出 Linux 中的所有用户 本地用户的详细信息可以在/etc/passwd文件中找到。文件中包含的每一行都包含一个用户的信息。 有两种选择。 通过键入以下命令打开etc/passwd文件: cat etc/passwd 或者,你可以使用以下less命令: less etc/passwd 注意:要显示登录用户列表以及引导时间、进程、主机名等信息,请使用who 命令。 使用getent命令列出所有Linux用户 /etc/nsswitch.
入门笔记
2022/06/02
9.2K0
如何在linux中列出所有用户
Ubuntu操作系统中如何列出用户
大家好!我很高兴能为您带来这篇客座博文,今天我们将深入探讨在Ubuntu操作系统中如何列出用户。了解系统中的用户是网络管理的重要一环。我们将为您提供一个完整的教程,包含5个与此相关的关键要点,每个要点都有详细的示例和用例。
用户10665603
2023/07/18
5.4K0
编码技巧 --- 同步锁对象的选定
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new 出来的普通CLR对象。
郑子铭
2023/08/30
1310
编码技巧 --- 同步锁对象的选定
Spring MVC4 @RequestMapping
查看RequestMapping源码会发现@Target({ElementType.METHOD, ElementType.TYPE})说明RequestMapping可以用于方法以及类声明上,在类上注明RequestMapping后,访问类中方法时需加上类的RequestMapping地址。例如
三产
2021/01/13
2390
为什么要选择Vim编辑器
基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令模式!你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。
杨永贞
2020/08/04
1.3K0
为什么要选择Vim编辑器
自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.NET MVC 的
葡萄城控件
2018/01/09
9.9K0
自学MVC看这里——全网最全ASP.NET MVC 教程汇总
Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET MVC4 工具应用
ComponentOne Studio for ASP.NET最新版本2013V1支持MVC4,其中包括: 新增 MVC 4 工程模板 (C# & VB) 开箱即用的MVC 4 工程模板基于Microsoft内置模板创建,我们仅优化了标记和CSS样式为默认风格,熟悉的模板布局和界面风格,无疑将缩短您的学习过程、节省开发时间及提高开发效率。 新增国际化主题(Metro) MVC4 模板自动增强MVC Scaffolding模板,将会为您应用程序中的增删改查(CRUD)操作生成默认的模板文件,这些生成的文件为
葡萄城控件
2018/01/10
1.6K0
Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET  MVC4 工具应用
点击加载更多

相似问题

不设置选定选项的循环中的MVC4 Html.DropDownListFor

11

获取要列出的项目

23

未选定的html.dropdownlistfor选定值

11

如何列出选定项目的jenkins奴隶

30

要变量的选定ListBox项目

245
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文