gpt4 book ai didi

asp.net-mvc - MVC - 在同一 Controller 中具有相同名称和参数的 GET 和 POST 操作

转载 作者:行者123 更新时间:2023-12-02 20:34:40 29 4
gpt4 key购买 nike

我正在开发一个 MVC4 项目,并且在同一个 Controller 中有两个具有相同名称和参数的操作:

public ActionResult Create(CreateBananaViewModel model)
{
if (model == null)
model = new CreateBananaViewModel();

return View(model);
}

[HttpPost]
public ActionResult Create(CreateBananaViewModel model)
{
// Model Save Code...

return RedirectToAction("Index");
}

我想要将现有模型传递到 Create 方法中的原因是克隆然后修改现有模型。

显然编译器不喜欢这样,所以我改变了一种方法,如下所示:

[HttpPost]
public ActionResult Create(CreateBananaViewModel model, int? uselessInt)
{
// Model Save Code...

return RedirectToAction("Index");
}

这是完全可以接受的吗?或者有更好的方法来解决这个问题吗?

编辑/解决方案:

看来我把情况搞得太复杂了。这是我的解决方案

public ActionResult Duplicate(Guid id)
{
var banana = GetBananaViewModel(id);

return View("Create", model);
}

public ActionResult Create()
{
var model = new CreateBananaViewModel();

return View(model);
}

最佳答案

您真的需要 GET Create 操作中的 model 参数吗?你可以这样做:

public ActionResult Create()
{
var model = new CreateBananaViewModel();

return View(model);
}

或者,如果您希望接收操作的一些查询数据 (www.mysite.com/banana/create?bananaType=yellow)

public ActionResult Create(string bananaType, string anotherQueryParam)
{
var model = new CreateBananaViewModel()
{
Type = bananaType
};
return View(model);
}

并保持 POST 操作不变

[HttpPost]
public ActionResult Create(CreateBananaViewModel model) {}

关于asp.net-mvc - MVC - 在同一 Controller 中具有相同名称和参数的 GET 和 POST 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916603/

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