Tho*_*mas 2 asp.net-mvc asp.net-mvc-routing
我在家庭控制器中创建两个具有不同名称的动作方法
public ActionResult Default()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View("index");
}
public ActionResult Index(int a)
{
ViewData["Message"] = "Welcome to ASP.NET MVC! and Your Age is " + a;
return View();
}
Run Code Online (Sandbox Code Playgroud)
我的路由代码看起来像
routes.MapRoute(
"Default1", // Route name
"{Home}/{ID}", // URL with parameters
new { controller = "Home", action = "Index", id =UrlParameter.Optional});
routes.MapRoute(
"Default2", // Route name
"{Home}", // URL with parameters
new { controller = "Home", action = "Default" }
);
routes.MapRoute(
"Default", // Route name
"{controller}", // URL with parameters
new { controller = "Home", action = "Default" }
);
Run Code Online (Sandbox Code Playgroud)
但仍然有问题
当我输入像http:// localhost:7221这样的url 然后回家并调用Default()方法但是如果我输入url就好了
http:// localhost:7221/Home然后出错.为了处理这种情况我定义了路线
routes.MapRoute("Default2",//路由名称"{Home}",//带参数new {controller ="Home",action ="Default"}}的URL;
但它不起作用.......你可以告诉我为什么.
如果我输入类似http:// localhost:7221/Home/88的 url,那么应该调用Index(int a)方法但是会出错.为什么
我希望当我输入url http:// localhost:7221或http:// localhost:7221/Home时应该调用Default()并且当我输入时
http:// localhost:7221/Home/88然后应该调用Index(int a).我的路线有什么问题.我怎么能纠正它.如果可能的话纠正我的路线代码.谢谢
此规则实际上应涵盖您需要的一切:
routes.MapRoute(
"Default",
"{controller}/{action}/{a}",
new {
controller = "Home",
action = "Index",
a = UrlParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
请注意以下事项:
参数名称需要匹配方法上的参数,你有- id并且a- 所以框架不能匹配它们.在上面的规则中,我已经放置a了映射规则以匹配您的方法,但您应该在两个地方都给它一个更好的名称.
如果未提供控制器或操作,则此规则默认为/ Home/Index.如果你想点击你命名的动作,Default你会转到/ Home/Default
如果您提供/ Home/Index/21,它将调用Index方法 - 但如果您没有提供年龄,则会出现问题,因为您没有方法可以匹配该规则.您需要添加方法public ActionResult Index()或使用默认值public ActionResult Index(int a = 0)
以下是一些应该适用于此规则的URL示例.
http://yourapp/ - 将转到/ Home/Indexhttp://yourapp/Home - 将转到/ Home/Indexhttp://yourapp/Home/Default - 将转到/ Home/Defaulthttp://yourapp/Home/Index - 请参阅上面的笔记 - 您需要一种方法来支持这一点http://yourapp/Home/Index/21- 将转到/ Home/Index并传递a给21| 归档时间: |
|
| 查看次数: |
13328 次 |
| 最近记录: |