我正在创建一个asp.net mvc 4应用程序
public class AspNetController : Controller
{
//
// GET: /AspNet/
public ActionResult Index()
{
return View();
}
public ActionResult Introduction()
{
return View();
}
}
如上所示有AspNet控制器和简介操作方法
简介操作方法的默认网址是
本地主机:55134 / ASPNET /介绍
但我想要Url赞
本地主机:55134 / ASPNET /引入到ASPNET
同样的 / localhost:55134 / aspnet / NetFrameWork 致
/localhost:55134/aspnet/What-is-.Net-Framework
如何做到
答案 0 :(得分:3)
您应该能够使用ActionName属性来装饰您的路线。
[ActionName("Introduction-To-AspNet")]
public ActionResult Introduction()
{
return View();
}
你真的想使用AttributeRouting,或者通过第三方软件包,或者如果可以的话本地使用。
答案 1 :(得分:1)
从技术上讲,这个概念来自ASP.NET MVC中的路由。
为此,您需要在alter sequence
App_Start->RouteConfig.cs
文件中为路线输入一个条目
例如:
RegisterRoutes(RouteCollection routes)
此处 aspnet / introduction-To-AspNet 会在您的基本网址后附加,即 localhost:55134 /
答案 2 :(得分:0)
快速而肮脏的答案是为〜/ AppStart / RouteConfig.cs文件添加一个路由,它将被处理:
routes.MapRoute(
name: "CustomRoute",
url: "Aspnet/Introduction-To-AspNet",
defaults: new { controller = "Home", action = "AspNet", id = UrlParameter.Optional }
);
但是,我假设这是针对某种类型的博客?我建议你有一个名为view的动作方法,然后使用你的名字作为文章的参数。这样,每次添加新文章或其他内容时,您都不必进入并编辑代码:
public class ArticlesController : Controller
{
public ActionResult ViewArticle(string? title)
{
ViewBag.Article = title;
return View();
}
}
这样,你的网址就是www.yoursite.com/Articles/ViewArticle/Introduction-To-AspNet。一般情况下,如果可以避免,请不要在路由配置中添加大量特定路由。话虽这么说,如果这是遗留系统,路由表可能是唯一的方法。
修改
好的,你可以做的是将字符串传递给ViewBag
并使用case语句来确定要显示的部分视图(我认为这可能是你理想的解决方案):
<!--cshtml view-->
@switch(ViewBag.Article)
{
case 'Introduction-To-AspNet':
@Html.Partial('pathToPartialView.cshtml')
break;
case 'Some-Other-Article'
@Html.Partial('pathToAnotherPartialView.cshtml')
break;
...
...
default:
@Html.Partial('invalidArticleName.cshtml')
break;
}
控制器会通过ViewBag
传递文章名称然后您可以使用案例陈述来确定要呈现的文章......当然,您一直在寻找真正的秘密酱for:@Html.Partial('URL')
- 如果您将其放在页面中,这将取消您的部分并将其渲染为正确。您也可以像对待FYI一样将对象传递给它。
此外,请确保您在switch语句上有一个默认操作,该操作将显示某种404页面,指示URL中的名称无效。你总是希望在你从URL获取用户输入的时候拥有这个,因为人们一直在使用URL(而且更无辜,复制+粘贴错误/不完整)