首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC ActionLink建议

MVC ActionLink建议
EN

Stack Overflow用户
提问于 2016-07-21 15:27:00
回答 3查看 87关注 0票数 0

我刚从.NET开始,正在构建一个测试应用程序。我目前已经使用DefaultControllerIndex()操作方法设置了主页。这和预期的一样,主页是简单的www.domain.com。

我在同一个DefaultController下创建了两个新页面(术语和隐私),使用Terms()Privacy()操作方法。

我希望能够浏览这些网址为www.domain.com/terms和www.domain.com/隐私。

当我使用<li>@Html.ActionLink("Terms of Service", "Terms", "Default")</li>时,它可以工作,但它会让我访问网址:www.domain.com/Default/隐私。

我应该为这些页面中的每一个创建独立的控制器,还是我使用的@html.ActionLink助手不正确?我以前使用过<li><a href="~/privacy">Privacy Policy</a></li>,但我知道这不是最佳实践吗?

此外,是否有办法强制链接为小写?

我的控制器代码:

代码语言:javascript
复制
public class DefaultController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Terms()
    {
        return View();
    }

    public ActionResult Privacy()
    {
        return View();
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-21 15:35:18

如果这些是在HomeController,我不相信你会有同样的问题。但是,我认为您可以通过使用RouteConfig文件来解决这个问题:

代码语言:javascript
复制
routes.MapRoute(
    name: "Default",
    url: "{Action}/{Id}",
    defaults: new { controller = "Default", Action = "Index", Id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Generic",
    url: "{controller}/{Action}/{Id}",
    defaults: new { Action = "Index", Id = UrlParameter.Optional }
);
票数 3
EN

Stack Overflow用户

发布于 2016-07-21 16:09:15

我相信您想要做的是将控制器名称隐藏在url中。如果是这样的话,你的问题在这里得到回答:

ASP.NET MVC - Removing controller name from URL

票数 1
EN

Stack Overflow用户

发布于 2016-07-22 22:14:47

您可以使用属性路由为端点提供特定路由。

代码语言:javascript
复制
[Route("terms")]
public ActionResult Terms()
{
    return View();
}
[Route("privacy")]
public ActionResult Privacy()
{
    return View();
}

RouteConfig.cs中,必须使用以下代码行启用属性路由:routes.MapMvcAttributeRoutes();

现在,使用@Url.Action()@Html.ActionLink生成的任何urls都应该生成URLS,如domain.com/隐私和domain.com/terms

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38508304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档