【问题标题】:C# ASP.NET Core Razor pages: How to access route constraint within markupC# ASP.NET Core Razor 页面:如何在标记中访问路由约束
【发布时间】:2018-10-12 20:15:19
【问题描述】:

我有一个 Razor 页面,其标记开头如下:

@page {id:int?}
...

现在,如果您访问路径 /MyPage/5 上的页面,则类方法 OnGet(Int32? id) 上的 id 参数将设置为值 5。

我想根据 id 的值显示一些条件标记,有没有办法可以直接访问标记中的 id?

我试过@id,但它说它没有定义——我猜这是有道理的。 我想我可以在OnGet(..) 方法中捕获它,如果没有其他方法可以直接执行此操作,则可以通过属性使其可用。这种方法的缺点是每次回发时我都必须重新设置值。

有没有办法做到这一点?

【问题讨论】:

    标签: c# razor asp.net-core


    【解决方案1】:

    简答

    这是访问id 值的一种方法。

    <p>RouteData.Values["id"]</p>
    

    调试

    如果你想调试,你可以像这样在页面上转储所有可用的RouteData:

    <p>@Newtonsoft.Json.JsonConvert.SerializeObject(RouteData)</p>
    

    输出将如下所示:

    {"DataTokens":{},"Routers":[],"Values":{"page":"/Index","id":"101273123"}}
    

    【讨论】:

    • 太棒了,完美运行。 .. 你说的是“一种方式”,这意味着可能还有其他方式,有没有一种更短的语法?
    • 我说“一种方式”是因为否则我听起来比实际更权威。 可能有更简洁的方法,但我还没有遇到过。理想的版本应该是 RouteData["id"]。
    • 哈哈很公平,是的,我同意,RouteData["id"] 会很好
    • 小更新:我们可以直接使用RouteData,不用@model前缀。
    猜你喜欢
    • 2019-05-22
    • 2020-05-06
    • 1970-01-01
    • 2018-01-31
    • 2020-05-01
    • 2020-05-06
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多