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

DNN 9.13 Razor主机模块:如何用QueryString参数获取指定UserID数据

DNN 9.13 Razor主机模块获取指定UserID用户数据的修正方案

问题原因

两段代码无法运行的核心是类型不匹配+语法错误:

  • Request.QueryString["userid"]返回字符串类型,而UserController.GetUserById(int portalId, int userId)的第二个参数要求整数类型
  • 第一段错误代码里,在方法参数中给变量querystringuserid额外加了@,属于Razor语法误用

修正后的完整代码(安全版)

@using DotNetNuke.Common;
@using DotNetNuke.Entities.Users;
@{ 
    var currentUserId = UserController.Instance.GetCurrentUserInfo().UserID;
    // 安全转换QueryString参数为整数,同时处理空值/非数字场景
    if (int.TryParse(Request.QueryString["userid"], out int targetUserId))
    {
        var targetUser = UserController.GetUserById(0, targetUserId);
        if (targetUser != null)
        {
            <p>指定用户昵称:@targetUser.DisplayName</p>
            <p>用户邮箱:@targetUser.Email</p>
        }
        else
        {
            <p>未找到对应ID的用户</p>
        }
    }
    else
    {
        <p>URL中的userid参数无效或未提供</p>
    }
}

关键修正点

  • 类型转换:用int.TryParse实现字符串到整数的安全转换,避免直接强制转换引发的运行时异常
  • 语法修正:调用方法时变量前无需加@,直接使用变量名即可
  • 空值校验:增加用户对象为空的判断,避免无效UserID导致的空引用错误

简化版(仅演示核心逻辑,不做异常处理)

如果不需要错误处理,仅做基础功能实现:

@using DotNetNuke.Entities.Users;
@{ 
    int targetUserId = int.Parse(Request.QueryString["userid"]);
}
@UserController.GetUserById(0, targetUserId).DisplayName

注意:此写法在userid参数为空或非数字时会抛出异常,仅适合参数格式确定的场景

内容的提问来源于stack exchange,提问作者Lu Ma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:53:14