gpt4 book ai didi

asp.net-mvc-3 - MVC Controller 操作 - 处理 POST 和 GET 没有重复的代码

转载 作者:行者123 更新时间:2023-12-04 11:15:24 25 4
gpt4 key购买 nike

我一直在研究这个 MVC 3 Razor 应用程序,并且通常为我的 View 使用 View 模型。

我的相当多的 View 模型包含更多信息,而不仅仅是我在表单中与之交互的特定实体。因此,我的 GET 操作处理程序将初始化 View 模型并为每个属性提供预期值等。

在我的 POST 操作处理程序中,我检查模型状态是否有效,如果不是,我重新显示有错误的表单/ View 。

在我的 POST 操作处理程序中,我发现自己必须从我的 GET 操作处理程序中复制代码,以便再次重新渲染 View 。如何实现我的 Controller 操作,以便我不必复制负责为 View 模型收集数据的代码?

我曾尝试让我的 Action 处理程序同时处理 POST 和 GET,但随后我要处理输入参数。我的 POST 操作处理程序会将 View 模型作为输入参数,但对于 GET 操作处理程序则不会。

最佳答案

您的 POST 处理程序可以从 GET 处理程序返回 ActionResult,如下所示:

public ActionResult SomePageGet() {
var model = new SomePageViewModel();

// Populate ViewModel:
...

return View("SomePageGet", model);
}

[HttpPost]
public ActionResult SomePagePost(SomePageViewModel input) {

// Validate the model:
...

if (!ModelState.IsValid) {
// Return the GET page, with error messages:
return SomePageGet();
}

return View("Success");
}

由于 ModelState 包含所有错误消息(和无效输入),GET 页面将正常显示它们。

关于asp.net-mvc-3 - MVC Controller 操作 - 处理 POST 和 GET 没有重复的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940509/

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