gpt4 book ai didi

c# - 在后期操作中重用模型数据

转载 作者:太空狗 更新时间:2023-10-29 23:47:36 26 4
gpt4 key购买 nike

在我的 View 模型中,我有一个从数据库中获取然后发送到 View 的项目列表。我想知道是否有可能避免在我点击 Post 操作并需要返回模型时重新填充 options 属性(对于验证错误等等)?

在网络表单中,这不是必需的。

编辑:我不清楚。我的问题是我用于 DropDownLists 的 SelectList 选项。一切都已发布,但如果我必须返回 View (模型无效),我必须从数据库重新加载选项!我想知道这是否可以避免。

我的 View 模型:

public class TestModel
{
public TestModel()
{
Departments = new List<SelectListItem>();
}

public string Name { get; set; }
public int Department { get; set; }
public IEnumerable<SelectListItem> Departments { get; set; }
}

我的看法:

@model MvcApplication1.Models.TestModel    
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Name)

@Html.DropDownListFor(m => m.Department, Model.Departments)

<input type=submit value=Submit />
}

我的 Controller (请注意 HttpPost 上的评论):

public ActionResult Index()
{
TestModel model = new TestModel
{
Name = "Rafael",
Department = 1,
Departments = new List<SelectListItem>
{
new SelectListItem { Text = "Sales", Value = "1" },
new SelectListItem { Text = "Marketing", Value = "2", Selected = true },
new SelectListItem { Text = "Development", Value = "3" }
}
};

// Departments gets filled from a database.

return View(model);
}

[HttpPost]
public ActionResult Index(TestModel model)
{
if (!ModelState.IsValid)
{
//Do I have to fill model.Departments again!?!?!?

return View(model);
}
else { ... }
}

提前致谢。

编辑:仅供引用,我的解决方案是使用Session 变量。

最佳答案

只需要强类型化您的 View ,并将您的 Controller 方法更改为具有该类类型的参数。

也就是 View

@model MyNamesspace.Models.MyModel
...
@using (Html.BeginForm())
{
....
}

还有你发布到的 Controller 方法。

[HttpPost]
public ActionResult MyAction(MyModel model)
{
...
}

编辑:还要确保您拥有需要发布到 Controller 的模型的每个属性的表单字段。我的示例也在使用 Razor 顺便说一句。

关于c# - 在后期操作中重用模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204370/

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