1

我正在尝试在我的控制器上实现 restful 约定,但不确定如何处理失败的模型验证以将其从 Create 操作发送回“New”视图。

public class MyController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult New()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Create(MyModel model)
    {
        if(!ModelState.IsValid)
        {
             // Want to return view "new" but with existing model
        }

        // Process my model
        return RedirectToAction("Index");
    }
}
4

2 回答 2

1

简单地:

[HttpPost]
public ActionResult Create(MyModel model)
{
    if(!ModelState.IsValid)
    {
        return View("New", model);
    }

    // Process my model
    return RedirectToAction("Index");
}
于 2011-07-17T12:23:35.523 回答
-1

当然,我不熟悉 REST 约定,所以我可能会离开这里……(而且我找不到说 New() 方法在几分钟内谷歌搜索后必须是无参数的来源)

您可以将您的 New() 方法更改为

public ActionResult New(MyModel model = null)
{
    return View("New", model);
}

然后在你的 Create()

    if(!ModelState.IsValid)
    {
         return New(model)
         // Want to return view "new" but with existing model
    }

并检查您的新视图是否设置了模型。在没有参数的情况下,New() 仍然可以像以前那样完美地工作。

于 2011-07-17T12:21:46.663 回答