MVC Dropdownlist returns null to HttpPost
本文关键字:to HttpPost null returns Dropdownlist MVC | 更新日期: 2023-09-27 18:35:56
我的问题是我正在尝试设置一个下拉列表,当选择一个新项目时,它将更新我拥有的信息表,但每次调用 HttpPost 函数时,参数总是为空。这是我的家庭控制器的索引功能:
public ActionResult Index()
{
Project[] projects = db.Projects.ToArray();
List<SelectListItem> dropList = new List<SelectListItem>();
BurndownSprintTable[] TableToShow = db.BurndownSprintTables.ToArray();
for (int index = 0; index < projects.Length; ++index)
{
dropList.Add(new SelectListItem { Text = projects[index].Name, Value = projects[index].Id.ToString(), Selected = projects[index].Selected });
if (projects[index].Selected == true)
{
int ProjectId = projects[index].Id;
TableToShow = db.BurndownSprintTables.Where(x => x.ProjectId == ProjectId).ToArray();
}
}
ViewBag.Projects = dropList;
return View(TableToShow);
}
TableToShow 用于显示每个项目的冲刺信息。
这是发布功能:
[HttpPost]
public ActionResult ProjectUpdate(string strProjectId)
{
return View("Index");
}
我意识到这个 post 函数会导致一个错误,我相信我可以自己修复,但我需要 strProjectId 不为空。
这是 html:
@model IEnumerable<TableauConfigWebService.Models.BurndownSprintTable>
@using (Html.BeginForm("ProjectUpdate", "Home", FormMethod.Post))
{
<h5>@Html.DropDownList("Id", (IEnumerable<SelectListItem>)ViewBag.Projects)
<input type="submit" value="Update" /></h5>
}
还有更多内容,但 html 的其余部分是为冲刺信息设置一个表格,效果很好。
我环顾四周,发现了一堆关于此的帖子,但似乎都没有帮助。我是 mvc 的新手,所以我知道它可能很简单,但我无法弄清楚。
感谢您的任何帮助。
更改为此
[HttpPost]
public ActionResult ProjectUpdate(string Id)
{
return View("Index");
}
或者将控件"名称"更改为
@Html.DropDownList("strProjectId", (IEnumerable<SelectListItem>)ViewBag.Projects)
试试这个简单的方法,并检查一下,
必须同名是下拉列表和模型属性。
但是你可以尝试这种简单的方式
[HttpPost]
public ActionResult ProjectUpdate()
{
**string strProjectId=Request.Form["strProjectId"].ToString();**//Or use Request["strProjectId"].ToString();
return View("Index");
}
@Html.DropDownList("**strProjectId**", (IEnumerable<SelectListItem>)ViewBag.Projects)
或
简单地说,你可以使用FormCollection,比如,
[HttpPost]
public ActionResult ProjectUpdate(FormCollection collection)
{
**string strProjectId=collection["strProjectId"].ToString();**
return View("Index");
}
@Html.DropDownList("**strProjectId**", (IEnumerable<SelectListItem>)ViewBag.Projects)
并使用断点检查我的代码!
在视图中的位置和控制器中使用相同的参数名称。
控制器中的任一更改。
public ActionResult ProjectUpdate(string Id)
{
return View("Index");
}
或者将视图下拉代码更改为此代码。
@Html.DropDownList("strProjectId", (IEnumerable<SelectListItem>)ViewBag.Projects)
希望这有帮助...