gpt4 book ai didi

c# - 为什么我的模型在发布后丢失了下拉列表项?

转载 作者:行者123 更新时间:2023-12-04 14:32:16 24 4
gpt4 key购买 nike

我有一个简单的页面 mvc,只有一个操作。索引操作中的 Get 方法我创建了属性 model.categoria 的一个实例,我用 3 个项目赋值。问题是,如果我运行 post index of action,如下所示,我会出错,因为下拉列表关联的 model.categoria 为空。我的问题是:我总是在每一篇文章中实例化 model.categoria 以避免这个问题,今天我想知道,这是正确的吗?

这是我将返回错误的代码:值不能为空。

Controller Action :

public ActionResult Index()
{
var model = new Models.UploadVideoPage.UploadVideoPageModel();
model.categoria = new List<Models.UploadVideoPage.ListCategorie>();
model.categoria.Add(new ListCategorie { TitoloCategoria = "Volontariato", idCategoria = 1 });
model.categoria.Add(new ListCategorie { TitoloCategoria = "Interno", idCategoria = 2 });
model.categoria.Add(new ListCategorie { TitoloCategoria = "Sindacato", idCategoria = 3 });
return View(model);
}
[HttpPost]
public ActionResult Index(Models.UploadVideoPage.UploadVideoPageModel model)
{
return View(model);
}

index.cshtml

 @Html.LabelFor(x => x.categoria)
@Html.DropDownListFor(x => x.categoria.First().idCategoria, new SelectList(Model.categoria, "idCategoria", "TitoloCategoria"))

最佳答案

您每次回发时都必须填充列表,除非您要为表单中的所有值设置隐藏字段。只需要几行代码就可以使它以不同的方式工作

public ActionResult Index()
{
var model = new Models.UploadVideoPage.UploadVideoPageModel();
PopulateDependencies(model);
return View(model);
}
[HttpPost]
public ActionResult Index(Models.UploadVideoPage.UploadVideoPageModel model)
{
PopulateDependencies(model);
return View(model);
}

private void PopulateDependencies(Models.UploadVideoPage.UploadVideoPageModel model)
{
model.categoria = new List<Models.UploadVideoPage.ListCategorie>();
model.categoria.Add(new ListCategorie { TitoloCategoria = "Volontariato", idCategoria = 1 });
model.categoria.Add(new ListCategorie { TitoloCategoria = "Interno", idCategoria = 2 });
model.categoria.Add(new ListCategorie { TitoloCategoria = "Sindacato", idCategoria = 3 });
}

关于c# - 为什么我的模型在发布后丢失了下拉列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com