下拉列表对于始终向控制器返回 null
本文关键字:返回 null 控制器 于始终 下拉列表 | 更新日期: 2023-09-27 17:56:51
My ViewModel 看起来像这样:
public class ProjectViewModel
{
public ICollection<Project> Projects { get; set; }
}
我的控制器:
[HttpPost]
[Route("ChooseProject")]
public ActionResult ChooseProject(Project projects)
{
return RedirectToAction("Index", "Application");
}
最后我的观点:
@using ServicePortal.Web.Controllers
@model ServicePortal.Web.Models.ProjectViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "Choose project";
}
<div class="pure-form pure-form-aligned">
@using (Html.BeginForm("ChooseProject", "Login", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="innerForm formgroup">
@Html.ValidationSummary(true, "", new { @class = "" })
@Html.DropDownListFor((model => model.Projects), new SelectList(Model.Projects,"ProjectKey", "ProjectName"))
<div class="row">
<button type="submit" class="button pull-right">Go on</button>,
</div>
</div>
}
</div>
下拉列表填充了正确的值,但我想将项目或带有 ProjectKey 的字符串返回到控制器。但是,当我提交表单并检查控制器中参数中的值时,它始终为 null,无论是当我尝试返回 Project 还是尝试使用字符串时。我没有收到任何错误。我做错了什么?
试试这个:
public class ProjectViewModel
{
public string SelectedProjectKey { get; set; } // string may need to be int depending on what type ProjectKey is in your class
public ICollection<Project> Projects { get; set; }
}
在视图中:
@Html.DropDownListFor((model => model.SelectedProjectKey), new SelectList(Model.Projects,"ProjectKey", "ProjectName"))
控制器操作:
public ActionResult ChooseProject(ProjectViewModel model)
这将为您提供您在模型中选择的任何项目的密钥。SelectedProjectKey,您可以在控制器 chooseproject 操作方法中使用它来执行您想要的任何操作。