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

.NET Core cshtml:如何将单个字符串传递至Controller?求助

解决表单构建与Controller传参的问题

嘿,我来帮你搞定这个表单构建的问题!其实核心就是让HTML表单正确把输入框的内容传递给目标Controller,下面一步步给你讲清楚:

1. 基础HTML表单结构

首先你需要一个<form>标签来包裹输入框和提交按钮,关键是要设置好action和method属性:

<form action="/search-results" method="GET">
  <!-- 输入文本框 -->
  <input type="search" name="search_query" placeholder="输入搜索内容..." required>
  <!-- 提交按钮 -->
  <button type="submit">搜索</button>
</form>

关键属性解释:

  • action:这里填你的新Controller对应的路由地址,比如如果你的Controller处理搜索的路径是/search-results,就写这个值。
  • method:推荐用GET(搜索场景下更合适,因为请求参数会显示在URL里,方便用户收藏或分享搜索结果);如果是敏感内容可以用POST,但搜索一般用GET就够了。
  • name="search_query":这个是**核心!**后端Controller就是通过这个name来获取输入框的文本内容的,一定要设置对,不能漏。
  • type="search":比普通的text更语义化,部分浏览器会自动添加清除按钮等小功能。
  • required:可选,用来强制用户输入内容再提交。

2. 后端Controller如何接收参数

不管你用什么后端框架(比如Spring Boot、Laravel、Express等),核心都是通过刚才设置的name属性来获取参数:

举两个常见框架的例子:

例子1:Spring Boot(Java)

@Controller
public class SearchController {
    @GetMapping("/search-results")
    public String showSearchResults(@RequestParam("search_query") String query, Model model) {
        // 这里拿到query就是用户输入的文本,接下来做搜索逻辑
        model.addAttribute("results", yourSearchService.search(query));
        return "search-results-page"; // 返回展示结果的视图
    }
}

例子2:Laravel(PHP)

Route::get('/search-results', [SearchController::class, 'showResults']);

// SearchController里的方法
public function showResults(Request $request) {
    $query = $request->input('search_query');
    $results = YourSearchModel::where('content', 'like', "%{$query}%")->get();
    return view('search.results', compact('results'));
}

3. 额外优化小技巧

  • 可以给表单加autocomplete="on"让浏览器自动填充历史搜索内容;
  • 输入框可以加maxlength限制输入长度;
  • 如果需要回车提交,不用额外写JS,浏览器默认支持点击提交按钮或回车提交表单。

这样一套下来,你的表单就能把用户输入的文本传递到新Controller,然后在Controller里处理搜索逻辑,最后渲染结果页面啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:14:21