當試圖將參數傳遞到一個簡單的控制器I接收參數一如既往被空。MVC uri參數是空
控制器
public class GetOrgController : Controller
{
private DirectoryEntities de;
public getOrgController()
{
de = new DirectoryEntities();
}
// GET: getOrg
public ActionResult Index(string district)
{
getorg_Result org = de.getorg(district).FirstOrDefault();
return View(org);
}
}
當我嘗試導航到該網址與參數localhost:660366/GetOrg/Index/D123
區變量始終是null
。
我想也許這不得不做一些與默認RouteConfig
。當我在默認路由配置之前放置一個新值時,它就起作用了!但是現在,無論何時我嘗試啓動應用程序,它都會首先進入GetOrgController
。當我想要一個具有不同參數的新控制器時會發生什麼?我每次都必須這樣做?這是我的新的RouteConfig與新條目。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "GetOrg",
url: "{controller}/{action}/{district}",
defaults: new { controller = "GetOrg", action = "Index", district = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我實際上開始在Web Api 2中開始做Rest,但是視圖模型吸引了我到MVC。在方法之上指定我想要的路線/參數在下面會更容易。這是可能的MVC?
WebApi2
[Route("Index/{district}")]
public ActionResult Index(string district)
{
getorg_Result orgs = de.getorg(district).FirstOrDefault();
return View(orgs);
}
上述方法似乎不是必須依賴控制器在RouteConfig
爲什麼不只是名稱區標識? –
'...我想下面。這在MVC中可能嗎?'<=看起來這是可能的。請參閱[MVC 5路由屬性](http://stackoverflow.com/a/38103475/1260204)。 – Igor
像@ErikPhilips下面回答,你的兩條路線相互衝突。它們是完全相同的,第一個被擊中的將是定義列表中的第一個。 – Igor