在我的 Controller 中,我有一个 Edit GET 方法来显示 View ,还有一个 Edit POST 方法来保存更改:

public ViewResult Edit(int id)
{
    //
}

[HttpPost]
public ActionResult Edit(int id)
{
    //
}

但我收到一条错误消息:

类型“Controllers.MyController”已经定义了一个名为“Edit”的成员,其参数类型与 相同

我该如何解决这个问题?

最佳答案

您可以实现 View 模型,以便您拥有包含所有字段的 EditViewModel,您希望用户能够编辑并在您的 Edit GET 方法中返回它,并拥有 View 模型的强类型 View 。那么这意味着在您的 POST 方法中,您将 EditViewModel 作为参数传递,有点像这样:

[HttpGet]
public ViewResult Edit(int id)
{
    //build and populate view model
    var viewModel = new EditViewModel();
    viewModel.Id = id;
    viewModel.Name = //go off to populate fields

    return View("", viewModel)
}

[HttpPost]
public ActionResult Edit(EditViewModel viewModel)
{
    //use data from viewModel and save in database
}

所以你的 GET 和 POST 方法会有不同的签名。希望这可以帮助。

关于c# - 包含相同参数的 ViewResult 和 ActionResult 出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4698252/

10-12 16:44
查看更多