DropDownListFor返回选择的值总是0



我有一个代码,我尝试绑定数据从一个模型到DropDownListFor,它成功地显示下拉视图执行时,但它不返回所选的值,除了0总是。我已经检查并尝试了许多解决方案张贴在这里,但它似乎没有工作。

AdminController.cs(创建()操作,用于创建。cshtml View and ProductSave() Form action)

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(这里我只包含了View的必要字段)

@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>

当选择一个类别时,值相应改变截图

我尝试在表单操作方法中返回Content(),以便在点击提交按钮后查看绑定视图模型的输出。

return Content(viewModel.SelectedId.ToString());

但是这是我得到的截图

我只想得到与所选列表项对应的输出。

看看你的HTML,罪魁祸首可能是:

<div class="nice-select single-select">

DropdownListFor应该生成一个带有ID值的<select>元素,MVC将解析该值以在返回行程中填充模型。HTML生成<ul>

您可以删除外部<div>或类定义,它应该工作。获取"nice-select"工作可能需要一些阅读它是什么,并与MVC绑定控件进行交互,以使其与表单回发兼容。您可能需要使用一些Javascript和@Html.HiddenFor,以便当从<ul>中选择一个值时,与模型绑定的隐藏输入被更新并可用于回发。

最新更新