gpt4 book ai didi

asp.net-mvc - ASP.NET MVC ViewModel 与 SelectList 最佳实践

转载 作者:行者123 更新时间:2023-12-02 17:11:42 25 4
gpt4 key购买 nike

我注意到,在 NerdDinner 应用程序中,如果 ModelState 对于晚餐无效,它只会返回模型的 View :

        if (ModelState.IsValid) {
...
return RedirectToAction("Details", new { id=dinner.DinnerID });
}

return View(dinner);

但是,在我的应用程序中,模型(在这种情况下为 View 模型)包含多个 SelectList。这些列表此时尚未实例化,因为该 View 模型只是从表单提交中填充的。在将其发送回用户之前重新填充此 SelectList 的推荐方法是什么?

这就是我希望 Controller 执行的操作:

public ActionResult Save(MyModel model)
{
if (ModelState.IsValid)
{
businessClass.Save(model);
return RedirectToAction("Index", "Home");
}

// This won't work because model has uninstantiated SelectLists
return View("MyView", model);
}

如果 ModelState 无效,我不想将模型发送到我的业务逻辑,但将 SelectList 填充代码放入我的 Controller 似乎没有意义。我是否应该在业务逻辑中创建一个公共(public)方法,专门用于在我的 View 模型上执行此类操作?

最佳答案

我个人喜欢保持简单:-

[HttpGet]
public Edit(int id) {
EditForm form = new EditForm();
// Populate from the db or whatever...
PopulateEditPageSelectLists(form);
return View(form);
}

[HttpPost]
public Edit(EditForm form) {
if (ModelState.IsValid) {
// Do stuff and redirect...
}
PopulateEditPageSelectLists(form);
return View(form);
}

public void PopulateEditPageSelectLists(form) {
// Get lookup data from the db or whatever.
}

如果填充选择列表的逻辑非常疯狂,那么可能值得移至单独的类或其他类,但作为第一步,这是最好的起点。

关于asp.net-mvc - ASP.NET MVC ViewModel 与 SelectList 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893448/

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