您好我是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中定制路由的经验。我只需要为我的操作传递参数的网址" openSampleView" ,以便它接受参数值并呈现视图。我已经使用模型参数,但任何建议,以纠正这一点表示赞赏,谢谢。
答案 0 :(得分:1)
如果要在URL中传递SubmissionId,则需要将其作为操作的参数,而不是模型。在从视图中POST数据时使用model作为参数。此外,如果您想在视图中使用该模型,则需要将其传入。
这样就给出了
的控制器动作public ActionResult openSampleView(string submissionId)
{
if (submissionId == null) return null;
var model = new Models.WorkFlowTest {SubmissionId = submissionId};
return View("Submission", model);
}
在您的路线中,您可以在传递submissionId时定义您想要的任何网址。一个例子是:
routes.MapRoute("Submission", "submissions/{submissionId}", new { controller = "WorkFlowTest", Action = "openSampleView" });
然后,网址http://www.example.com/submissions/1应该适用于ID为1的提交(显然将www.example.com替换为您的网站)。
要在视图中使用提交ID,您需要将视图绑定到模型,并在视图的开头添加以下行。
@model MockBDPWorkflowTestApp.Models.WorkFlowTest
然后在视图中,您可以使用
检索ID@Model.SubmissionId