路线.MapRoute定制:传入请求不匹配任何路由

本文关键字:请求 不匹配 任何 路由 MapRoute 定制 路线 | 更新日期: 2023-09-27 18:08:33

嗨,我是新的MVC:并得到错误"传入的请求不匹配任何路由"

控制器controllerWorkflowTestController.cs有如下代码:

public class WorkFlowTestController : Controller
{
    public ActionResult openSampleView(Models.WorkFlowTest  model)
    {
        if (model.SubmissionId  != null)
        {
            return View("Submission");
        }
        return null;
    }

}

模型代码:

   namespace MockBDPWorkflowTestApp.Models
   {
           public class WorkFlowTest
           {
             public string SubmissionId { get; set; }
           }
  }

}

,在全局。asax中,我有:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
       "Default",
       "WorkFlowTest/openSampleView/&SubmissionId=1",
       new { controller = "WorkFlowTest", action = "openSampleView", id = "" }
       );
    }

这给出错误的传入请求不匹配任何路由。这看起来很简单,但没有在MVC中定制路由的经验。我只需要url传递我的动作"openSampleView"的参数,以便它接受参数值并呈现视图。我已经使用模型参数,但任何建议纠正这一点是赞赏的,谢谢。

路线.MapRoute定制:传入请求不匹配任何路由

如果您想在url中传递SubmissionId,您将需要它作为操作的参数,而不是模型的参数。当从视图发送数据时,使用model作为参数。另外,如果你想在视图中使用模型,你需要传递它。

这就给了一个控制器动作

public ActionResult openSampleView(string submissionId)
{
    if (submissionId == null) return null;
    var model = new Models.WorkFlowTest {SubmissionId = submissionId};
    return View("Submission", model);
}

在你的路由中,你可以在传入submissionId时定义任何你想要的url。例如:

routes.MapRoute("Submission", "submissions/{submissionId}", new { controller = "WorkFlowTest", Action = "openSampleView" });

那么URL http://www.example.com/submissions/1应该工作与id为1的提交(取代www.example.com与您的网站显然)。

要在视图中使用提交id,您需要在视图的开头使用以下行将视图绑定到模型。

@model MockBDPWorkflowTestApp.Models.WorkFlowTest

然后在视图中你可以用

检索id
@Model.SubmissionId