我在RouteConfig.cs中有以下路由:
routes.MapRoute(name: "",
url: "{controller}/{action}/InwDocSource{id}",
defaults: new { Controller = "InwardDocument", action = "AddDocument", id = "1" });
在我的控制器中:
public class InwardDocumentController : Controller
public ActionResult AddDcument(string id){
if(id=="1")
ViewBag.IdInWords="The received id is ONE";
else if(id=="2")
ViewBag.IdInWords="The received id is TWO";
else
ViewBag.IdInWords="The received id is SOMETHING ELSE";
return View("Index");// FYI the Index.cshtml is not strongly typed
}
}
因此上面的映射将匹配任何具有3个段的url,其中第三个段应以“InwDocSource”开头。并且所有段变量都具有默认值,以防它们未从浏览器传递。让我们假设我的根网站是www.mysite.net,上面的url映射是RouteConfig.cs文件中唯一的一个
答案 0 :(得分:0)
我将开始以相反的顺序回答
路线映射表示它将匹配一个包含3个网段的网址,其中第三个网段必须以InwDocSource
开头。因此,当我通过www.mysite.com/InwardDocument/AddDocument/InwDocSource
时,有3个段,第三个段确实以静态字符串InwDocSource
开头,它不必继续或以其他方式结束。 :)所以第三段的价值变为InwDocSource
,这就是为什么我得到The received id is SOMETHING ELSE
当我只传递域部分时,路由配置仍然会匹配上面的映射,因为所有三个段都有默认值,以防它们中的任何一个未明确传递。