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

如何将查询参数值传入HTML.Partial的模型?(非.NET Core MVC)

解决方案

一、获取查询参数并传递给Product方法

推荐方式:通过控制器处理(符合MVC设计原则)

在对应的ProductsController的Product Action中直接接收查询参数,再调用数据逻辑获取产品,最后传递给视图:

public ActionResult Product(int id)
{
    // 调用数据库逻辑获取对应ID的产品
    var product = Model.Product(id);
    // 将产品数据传给视图
    return View(product);
}

然后在视图中直接把Model传给Partial:

@Html.Partial("~/Views/ProductLanding/product.cshtml", Model)

这种方式把数据逻辑放在控制器,视图只负责渲染,更易维护,还能在控制器里做参数校验(比如判断id是否合法)。

临时方式:视图直接获取查询参数(不推荐)

如果一定要在视图里直接获取参数,可通过Request.QueryString获取,注意要做类型转换和异常处理:

@{
    int productId = 1; // 默认值
    if (int.TryParse(Request.QueryString["id"], out int id))
    {
        productId = id;
    }
}
@Html.Partial("~/Views/ProductLanding/product.cshtml", Model.Product(productId))

这种方式会让视图包含业务逻辑,不利于代码维护,仅作为临时方案。

二、配置友好URL(伪静态路由)

打开App_Start文件夹下的RouteConfig.cs,在默认路由之前添加自定义路由规则:

routes.MapRoute(
    name: "ProductDetail",
    url: "products/product/{id}",
    defaults: new { controller = "Products", action = "Product", id = UrlParameter.Optional }
);

路由规则说明:

  • url: "products/product/{id}":定义友好URL格式,{id}是参数占位符
  • defaults:指定对应的控制器、Action,id = UrlParameter.Optional表示id参数可选(如果需要必填可去掉这个设置)

添加后,访问..../products/product/4就会匹配到ProductsController的Product Action,并将4作为id参数传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:42:24