如果我在url之后没有正斜杠,那么在不同控制器上路由到不同的操作方法时会出现异常。路由引擎确实路由我,如果网址中没有正斜杠我只是收到一个例外,我正在使用Internet Explorer进行调试,Chrome工作正常。看起来它首先在寻找索引的默认网址,如果没有找到它会查看传入的内容。我可能在这里错了...
如果我在渲染后添加正斜杠,则无异常。
<a class="btn-sm" style="font-size: 1em; font-weight: bold;" href="/profile/general/">Profile</a>
这会将我引导到网址,但有一个例外,如果我使用的是IE。如果我使用Chrome,它可以正常工作,也不例外。
<a class="btn-sm" style="font-size: 1em; font-weight: bold;" href="/profile/general">Profile</a>
这是例外
System.Web.HttpException:在控制器'YogaBand2017.Controllers.ProfileController'上找不到公共操作方法'Index'。
这是动作方法
public ActionResult General()
{
try
{
ViewBag.MenuItem = "profile";
ViewBag.UserMenuItem = "general";
var viewModel = _yogaProfileService.GetGeneralInfo(User.Identity.GetUserId());
return View(viewModel);
}
catch (Exception ex)
{
_errorService.LogError(ex, Request);
ViewBag.Message = "Oh No! Something went wrong fetching your info. We're looking into this now!";
return View("Error");
}
}
这是我的routeconfig文件
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "SpaceCleanRoute",
url: "space/{id}",
defaults: new { controller = "space", action = "index" },
constraints: new { id = @"\d+" }
);
routes.MapRoute(
name: "PublicSpaceRoute",
url: "space/public/{title}",
defaults: new { controller = "space", action = "public" },
constraints: new { title = @"^[A-Za-z0-9-]+$" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
以下是呈现之前的操作链接
@Html.ActionLink("Profile", "general", "profile", new { }, new { @class = "btn-sm", @style = "font-weight: bold; font-size: 1em;" })