如何将我的下拉列表中选择的项目保存到我的数据库中

本文关键字:我的 项目 保存 数据库 选择 下拉列表 | 更新日期: 2023-09-27 18:24:11

在用户注册期间,我需要将所选项目保存在数据库中。但我选择的项目似乎没有被识别。这是给我的错误

"没有类型为'IEnumerable'的ViewData项拥有钥匙"Faculties"

我在MVC/C#编程方面仍然不熟练,请帮忙下面是我的代码;提前感谢!

我的数据模型

public string Faculty { get; set; }

我的控制器

public ActionResult Register()
{
   DataClasses1DataContext db = new DataClasses1DataContext();
   ViewBag.Faculties = new SelectList(db.Faculties, "Id", "Name");
   return View();
}

我的视图

<div class="form-group">
    @Html.LabelFor(model => model.Faculty, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("Faculties","Select Faculty")
        @Html.ValidationMessageFor(model => model.Faculty, "", new { @class = "text-danger" })
    </div>
</div>

如何将我的下拉列表中选择的项目保存到我的数据库中

在下拉列表中显示项目的方式不正确。您可以使用以下代码来显示从数据库中提取的项目:

    @Html.DropDownList("Faculties", ViewBag.Faculties as IEnumerable<SelectListItem>, 
                       "Select Faculty");

请注意,您的ViewBag.Faculties应该被广播到Enumerable<SelectListItem>

要获得控制器中下拉列表的选定值,您可以使用以下方法:

var value = Request["Faculties"];

一旦获得了值,就可以将其保存在数据库中。

更新:

一个好的方法是将您的视图绑定到一个模型,我认为您已经这样做了,因为我可以看到您正在使用model.Faculty。因此,下拉列表在视图中应该如下所示:

@Html.DropDownList(model => model.Faculty,ViewBag.Faculties as IEnumerable<SelectListItem>,
                  "Select Faculty");

数据发布的控制器应该如下所示:

[HttpPost]
public ActionResult Register(YourModel model)
{
    var selectedFaculty = model.Faculty; //Selected Value
    //Save it in database
}

尝试更改此行:

ViewBag.Faculties = new SelectList(db.Faculties, "Id", "Name");

到以下

ViewData["Faculties"] = new SelectList(db.Faculties, "Id", "Name");

ViewBag和ViewData是两个独立的构造,不能互换使用。

只是您的财产和ViewBag的名称不同。更改ViewBag名称以匹配属性名称。

ViewBag.Faculty = new SelectList(db.Faculties, "Id", "Name");

你的HTML应该是:

 @Html.DropDownList("Faculty ","Select Faculty")

或者(最好)使用模型结合而不是ViewBag

型号

public string Faculty { get; set; }
public IList<SelectListItem> Faculties {get;set;}

控制器

Model.Faculties = new SelectList(db.Faculties, "Id", "Name");
return View(Model);

HTML(视图)

@Html.DropDownListFor(m => m.Faculty , Model.Faculties )