You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向无后台.cs文件的Int32模型Razor视图传递整数?

问题原因

Razor页面框架尝试实例化作为模型的System.Int32类型时,无法通过依赖注入或参数传递的方式创建其实例——值类型的默认构造函数虽存在,但框架的模型绑定机制无法直接将路由参数映射到值类型模型上,因此抛出构造函数找不到的错误。

解决方法

以下两种方案均可解决问题,按需选择:

方案1:用路由模板直接获取参数(无需模型)

修改Razor视图的@page指令,指定包含id参数的路由模板,再通过RouteData获取参数值:

@page "{id:int}"
<h3>传递的数值:@RouteData.Values["id"]</h3>

原链接代码保持不变:

<a asp-page="types/index" asp-route-id="0" class="btn-warning btn">GoPage</a>

方案2:用页面模型接收参数(推荐)

即使不单独创建后台.cs文件,也可在Razor视图内定义页面模型,通过[BindProperty]绑定路由参数:

@page "{id:int}"
@model IndexModel

<h3>传递的数值:@Model.Id</h3>

@functions {
    public class IndexModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public int Id { get; set; }
    }
}

链接代码无需修改,框架会自动将asp-route-id的值绑定到IndexModel的Id属性上。

关键说明
  • Razor页面的模型推荐使用自定义类而非简单值类型,这样模型绑定机制能更灵活地处理参数传递与验证。
  • 使用路由参数时,必须在@page指令中明确指定参数模板(如{id:int}),否则框架无法识别并传递参数。

内容的提问来源于stack exchange,提问作者Hosein Ghasemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:53:14