路线在mvc中不起作用

时间:2015-12-16 06:01:54

标签: c# asp.net-mvc asp.net-mvc-4

我有这个行动方法:

From 7083c4145878f954bbde14f1f6acbb31414c88d9 Mon Sep 17 00:00:00 2001
From: fedor patlin <patlin.f@sovzond.center>
Date: Fri, 18 Dec 2015 15:55:32 +0500
Subject: [PATCH] Set field hashCodeField accessible

---
 core/src/main/java/io/undertow/util/HttpString.java | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/src/main/java/io/undertow/util/HttpString.java b/core/src/main/java/io/undertow/util/HttpString.java
index cc75a0b..d21257c 100644
--- a/core/src/main/java/io/undertow/util/HttpString.java
+++ b/core/src/main/java/io/undertow/util/HttpString.java
@@ -335,7 +335,9 @@ public final class HttpString implements Comparable<HttpString>, Serializable {
     private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
         ois.defaultReadObject();
         try {
+            hashCodeField.setAccessible(true);
             hashCodeField.setInt(this, calcHashCode(bytes));
+            hashCodeField.setAccessible(false);
         } catch (IllegalAccessException e) {
             throw new IllegalAccessError(e.getMessage());
         }
-- 
2.5.0

我有两个这样的路由器:

 public virtual ActionResult NewsByCategory(int code)
    {...}

我有以下请求:

routes.MapRoute("lang",
   "{lang}/{controller}/{action}/{id}", 
   new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
   new[] { "CMS.mvcApp.Controllers" });

routes.MapRoute("langCode", 
  "{lang}/{controller}/{action}/{code}", 
  new { controller = "Home", action = "Index", code = UrlParameter.Optional }, 
  new[] { "CMS.mvcApp.Controllers" });

Undertow server

我收到此错误:

  

参数字典包含参数&#39;代码的空条目。非可空类型的System.Int32&#39; for method&#39; System.Web.Mvc.ActionResult NewsByCategory(Int32)&#39;在&#39; CMS.mvcApp.Controllers.NewsController&#39;。可选参数必须是引用类型,可空类型,或者声明为可选参数

为什么它不起作用?

1 个答案:

答案 0 :(得分:3)

MVC正在使用您在route.config中声明的第一个路由 文件。 MVC以这样一种方式工作,即只要它找到任何匹配 路由它不会在您的配置中查找下一个声明的路由。那么你 应始终在列表顶部和大多数位置添加最具体的路线 列表底部的通用路线。

您还可以使用参数类型的约束。

http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-route-constraint-cs