DropDownListFor returns 所选值始终为 0
DropDownListFor returns selected value always 0
我有一个代码,我尝试将模型中的数据绑定到 DropDownListFor,它在执行时成功地在视图中显示下拉列表,但它不会 return 选择的值,除了 0 总是。我已经检查并尝试了此处发布的许多解决方案,但似乎没有成功。
AdminController.cs(Create.cshtml View 和 ProductSave() Form 操作的 Create() 操作)
public ActionResult Create()
{
var categoryList = _context.Categories.ToList();
var viewModel = new CreateViewModel
{
Categories = categoryList,
};
return View(viewModel);
}
[HttpPost]
public ActionResult ProductSave(CreateViewModel viewModel)
{
return Content(viewModel.SelectedId.ToString());
}
CreateViewModel.cs
public class CreateViewModel
{
public IEnumerable<Category> Categories { get; set; }
public int SelectedId { get; set; }
public Product Product { get; set; }
}
Create.cshtml(我只在此处包含了视图的必要字段)
@using (Html.BeginForm("ProductSave", "Admin",null,FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="default-form-wrap style-2">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Product.Category_Id, new { @class = "control-label"})
<div class="nice-select single-select">
@Html.DropDownListFor(model => model.SelectedId,new SelectList(Model.Categories,"Id","CategoryName"),"Select Category", new { @class = "form-control" } )
@Html.ValidationMessageFor(model => model.Product.Category_Id, "", new { @class = "text-danger" })
</div>
</div>
<div class="row text-center">
<div class="col">
<input type="submit" value="Create" class="btn btn-base" />
</div>
</div>
</div>
选择类别后,值会相应更改
Screenshot
我尝试在表单操作方法中使用 return Content() 来查看点击提交按钮后绑定视图模型的输出
return Content(viewModel.SelectedId.ToString());
但这是我得到的
Screenshot
我只想得到选中的列表项对应的输出。
看看你的 HTML 罪魁祸首可能是:
<div class="nice-select single-select">
DropdownListFor 应该生成一个带有 ID 值的 <select>
元素,MVC 将解析回该 ID 值以在 return 行程中填充模型。您的 HTML 正在生成 <ul>
.
您可以删除外部 <div>
或 class 定义,它应该可以工作。要让“nice-select”工作,可能需要了解它是什么,并与 MVC 绑定控件进行交互以使其与 postback 形式兼容。您可能需要使用一些 Javascript 和一个 @Html.HiddenFor
,因此当一个值从 <ul>
中被 select 编辑时,与模型关联的隐藏输入会更新并可用于post-返回。
我有一个代码,我尝试将模型中的数据绑定到 DropDownListFor,它在执行时成功地在视图中显示下拉列表,但它不会 return 选择的值,除了 0 总是。我已经检查并尝试了此处发布的许多解决方案,但似乎没有成功。
AdminController.cs(Create.cshtml View 和 ProductSave() Form 操作的 Create() 操作)
public ActionResult Create()
{
var categoryList = _context.Categories.ToList();
var viewModel = new CreateViewModel
{
Categories = categoryList,
};
return View(viewModel);
}
[HttpPost]
public ActionResult ProductSave(CreateViewModel viewModel)
{
return Content(viewModel.SelectedId.ToString());
}
CreateViewModel.cs
public class CreateViewModel
{
public IEnumerable<Category> Categories { get; set; }
public int SelectedId { get; set; }
public Product Product { get; set; }
}
Create.cshtml(我只在此处包含了视图的必要字段)
@using (Html.BeginForm("ProductSave", "Admin",null,FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="default-form-wrap style-2">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Product.Category_Id, new { @class = "control-label"})
<div class="nice-select single-select">
@Html.DropDownListFor(model => model.SelectedId,new SelectList(Model.Categories,"Id","CategoryName"),"Select Category", new { @class = "form-control" } )
@Html.ValidationMessageFor(model => model.Product.Category_Id, "", new { @class = "text-danger" })
</div>
</div>
<div class="row text-center">
<div class="col">
<input type="submit" value="Create" class="btn btn-base" />
</div>
</div>
</div>
选择类别后,值会相应更改 Screenshot
我尝试在表单操作方法中使用 return Content() 来查看点击提交按钮后绑定视图模型的输出
return Content(viewModel.SelectedId.ToString());
但这是我得到的 Screenshot
我只想得到选中的列表项对应的输出。
看看你的 HTML 罪魁祸首可能是:
<div class="nice-select single-select">
DropdownListFor 应该生成一个带有 ID 值的 <select>
元素,MVC 将解析回该 ID 值以在 return 行程中填充模型。您的 HTML 正在生成 <ul>
.
您可以删除外部 <div>
或 class 定义,它应该可以工作。要让“nice-select”工作,可能需要了解它是什么,并与 MVC 绑定控件进行交互以使其与 postback 形式兼容。您可能需要使用一些 Javascript 和一个 @Html.HiddenFor
,因此当一个值从 <ul>
中被 select 编辑时,与模型关联的隐藏输入会更新并可用于post-返回。