路线.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"的参数,以便它接受参数值并呈现视图。我已经使用模型参数,但任何建议纠正这一点是赞赏的,谢谢。
如果您想在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