Asp.net mvc MVC返回视图()问题

Asp.net mvc MVC返回视图()问题,asp.net-mvc,Asp.net Mvc,我是MVC的新手,正在尝试为已经开发的应用程序添加更多功能 在验证导致模型无效后,返回带有已发布结果的视图时遇到问题 我的控制器有三个值得注意的动作: public ActionResult Create(int workID) [HttpParamAction] [HttpPost] public ActionResult SaveNormal(WorkViewModel workView) [HttpParamAction] [HttpPost] public ActionResult

我是MVC的新手,正在尝试为已经开发的应用程序添加更多功能

在验证导致模型无效后,返回带有已发布结果的视图时遇到问题

我的控制器有三个值得注意的动作:

public ActionResult Create(int workID)

[HttpParamAction]
[HttpPost]
public ActionResult SaveNormal(WorkViewModel workView)

[HttpParamAction]
[HttpPost]
public ActionResult SaveAddAnother(WorkViewModel workView)
由于前面的要求,我不得不更改submit操作,以便使用发布的结果调用上面两个操作中的一个。一切正常,但由于模型状态无效,我正在尝试发回,我正在尝试以下操作:

if (!ModelState.IsValid)
    return View("Create", workView);
它确实将我带到create(create.aspx)视图,但是URL是Work/Action,而不是Work/create,这意味着当我重新保存时,找不到Work/Action

我不确定这是否是路由问题,但提供了以下路由(我认为基本上是默认路由…):


任何帮助都将不胜感激

URL基于操作名称;不在视图名称上。您可能需要
重定向到操作(“创建”…)
并从此处发出View()

谢谢-我已使用TempData重定向以存储模型,尽管我正在丢失验证消息。我需要在TempData中传递ModelState吗?简短的回答是肯定的。较长的答案是,您可能需要重新考虑以下决定:由于前面的要求,我必须更改submit操作,以便使用发布的结果调用上面两个操作中的一个,尝试使用一个submit操作“Create”,并在那里使用逻辑来检查模型状态、保存(如果合适)、创建新的(这只是返回创建一个新的空视图)等等。看起来更干净、更简单。好的,我还传递了ViewData(其中包含invlaid modelstate)在TempData中,为了回应重新思考,控制器是这样设置的,因为我们希望在页面上有两个按钮,允许两个按钮都被单击以提供不同的操作、保存(插入并重定向到其他页面)和保存和添加其他(插入并重新加载新模型)。我当时似乎记得这是唯一的方法,但我可能错过了另一个解决方案。顺便感谢您的帮助!您完全可以有两个按钮指向同一个Post操作。formData将具有实际单击的按钮的名称。但我意识到,这是一个不同的主题:)
public static void RegisterRoutes(RouteCollection routes)
{

    // This is the original
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { 
            controller = "Home", 
            action = "Index", 
            id = UrlParameter.Optional 
        } // Parameter defaults
    );
}

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes);
}