加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-routing – 在MVC 6控制器中使用urlhelper生成链接(vNext)

发布时间:2021-03-31 03:37:06 所属栏目:asp.Net 来源:互联网
导读:我正在尝试学习新的MVC 6.我之前从未使用过Microsoft MVC框架. 我试图通过使用控制器的URL(urlhelper)添加指向控制器的不同操作的链接来增强简单的教程Web API(主控制器显示API可以执行的操作). 但是当我使用时: this.Url.Action(Get, new {id = id}); 我得

我正在尝试学习新的MVC 6.我之前从未使用过Microsoft MVC框架.
我试图通过使用控制器的URL(urlhelper)添加指向控制器的不同操作的链接来增强简单的教程Web API(主控制器显示API可以执行的操作).
但是当我使用时:

this.Url.Action("Get",new {id = id});

我得到一个带URL的查询字符串.我想要一个更安静的URL.

我想在使用属性路由时,我不必映射特定的路由,就像我在WebApi的旧教程中看到的那样.

我必须映射路线吗?
我需要做些什么才能获得更加宁静的网址风格?

解决方法

您可以在控制器中为路由属性添加名称,然后使用扩展方法IUrlHelper.RouteUrl生成URL.

例如,给定以下web api控制器:

[Route("api/[controller]")]
public class UsersController : Controller
{
    // GET: api/users
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1","value2" };
    }

    // GET api/users/5
    [HttpGet("{id}",Name ="UsersGet")]
    public string Get(int id)
    {
        return "value";
    }

    //additional methods...
}

您可以使用@ Url.RouteUrl(“UsersGet”,new {id = 123})为特定的id by id动作生成url api / users / 123.

使用Url.Action扩展方法时的问题是,如果你有一个像上面例子中的控制器,有2个名为“Get”的动作,这将使用没有参数的动作的路由并生成/ api / Users?id = 123 .但是,如果您对该方法发表评论,您会看到@ Url.Action(“获取”,“用户”,新{id = 123})也为您提供了预期的网址.

(编辑:大庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读