gpt4 book ai didi

c# - 尝试从数据库填充 DropDownListFor 时出错

转载 作者:行者123 更新时间:2023-11-29 06:26:14 25 4
gpt4 key购买 nike

我正在尝试填充 DropDownListFor数据库中的项目,但是当我尝试运行该程序时,它给了我错误 Object reference not set to an instance .就像方法(从数据库中获取数据并将其放入 SelectList )根本没有被调用,即使我已经从 Controller 调用并设置了它.

你能告诉我哪里出了问题吗?

这是我使用的代码:

从数据库中获取数据:(库存类)(创建数据库时,默认情况下,下表中的行 ID 就存在)

private string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\db1.mdf;Integrated Security=True";

[Display(Name = "ModuleData:")]
public string ModuleData
{
get;
set;
}

public string ID
{
get;
set;
}

public string Name
{
get;
set;
}

public IEnumerable<SelectListItem> ListData
{
get;
set;
}

public SelectList GetData()
{
List<SelectListItem> lists = new List<SelectListItem>();

using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "SELECT [Id], [Name] FROM [Query]";

conn.Open();

using (SqlCommand cmd = new SqlCommand(query, conn))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
ID = reader["Id"].ToString();

Name = reader["Name"].ToString();

lists.Add(new SelectListItem() { Text = Name, Value = ID });
}
}
}

conn.Close();
}

return new SelectList(lists, "Value", "Text");
}

Controller :

Inventory repository = new Inventory();

[HttpGet]
public ActionResult Module()
{
repository.ListData = repository.GetData();

return View();
}

[HttpPost]
public ActionResult Module(Inventory inven)
{
// There is a button later on and here I want to get the value of a selected `DropDownListFor`
return View(inven);
}

View (模块):

@model Project_Name.Inventory
@{
ViewBag.Title = "Inventory";
}

<h2>Inventory</h2>
<br />

@using (Html.BeginForm())
{
<div>
<fieldset>
<legend>Inventory</legend>
<div class="editor-label">
@Html.LabelFor(u => u.ModuleData)
</div>
<div class="editor-field">
@Html.DropDownListFor(u => u.ID, Model.ListData)
</div>
</fieldset>
</div>
}

上面是我正在使用的代码,但是一旦我运行程序,它就会在 @Html.DropDownListFor(u => u.ID, Model.ListData) 上给我错误说Object reference not set to an instance of an object .

这就是我的全部问题。

非常感谢

非常感谢您的回答。

最佳答案

在您的 GET 方法中,您分配 @Html.DropDownList() 使用的 SelectList using

repository.ListData = repository.GetData();

然而,当您 POST 并返回 View 时,您不会重新分配 SelectList,因此 Model.ListDatanull。您需要在调用 return View(inven);

之前立即重复上述代码行

您还需要在 GET 方法中返回您的模型

repository.ListData = repository.GetData();
return View(repository); // change this

关于c# - 尝试从数据库填充 DropDownListFor 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30818090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com