我正在尝试使用Html helper提交一个表单,如下所示:
@using (Html.BeginForm("Create", "Certificate", FormMethod.Post, new { enctype = "multipart/form-data", id = "complianceCertificate" }))在页面的加载中,我使用HTML helper绑定下拉菜单,如下所示
@Html.DropDownListFor(model => model._DetailsOfOwner.Id, Model._DetailsOfOwner.Practices, "Select licensee name...", new { @class = "form-control tx-13 pd-2 has-check-valid", @name = "LicenseeId" })
@Html.ValidationMessageFor(model => model._DetailsOfOwner.Practices, "", new { @class = "text-danger has-error-valid" })它已正确加载

问题出在提交表单的时候。它在SelectList的模型中传递null值。

这是我的类,选择列表位于其中
public class _DetailsOfOwnerViewModel : BaseAddress
{
public int Id { get; set; }
public SelectList Practices { get; set; }
public string LicenseeName { get; set; }
public string RMLNo { get; set; }
public string ContactPerson { get; set; }
public string Telephone { get; set; }
public string Email { get; set; }
}谢谢你。
发布于 2021-05-17 21:57:17
您不能返回完整的SelectList,您需要从将返回到服务器的下拉列表中选择一个值。你应该改变你的模型。
切换此选项
public SelectList Practices { get; set; }到这个
public string Practices { get; set; }发布于 2021-05-17 17:13:11
当选择一个项目时,下拉列表映射到单个值,而不是一组值,因此模型在提交时不会被正确绑定。尝试将Practicies的类型更改为int或string。
发布于 2021-05-26 12:28:43
在这里,您正在绑定模型对象的下拉列表,这可能就是您将SelectList作为practices属性的原因。但是,当您使用post方法接收表单数据时,您在下拉列表中只选择了一个值,因此需要int或string。因此,有两种方法可以修复它:
使用ViewBag绑定下拉菜单,您将在其中分配列表并替换
公共SelectList实践{get;set;}
至
公共字符串实践{get;set;}
并使用model._DetailsOfOwner.Practices属性而不是model._DetailsOfOwner.Id来绑定dropdown。
或者另一种方式是
您正在绑定下拉列表中的model._DetailsOfOwner.Id,因此您可以简单地从该属性中获取所选值。
https://stackoverflow.com/questions/67566789
复制相似问题