Blazor .NET C#无法从HTML <form>获取输入,报CS0103错误
解决CS0103:名称"Request"在当前上下文中不存在的问题
你遇到的错误信息:
CS0103 Der Name "Request" ist im aktuellen Kontext nicht vorhanden.
翻译:CS0103 名称"Request"在当前上下文中不存在
问题出在ASP.NET Core环境下,直接引用Request对象的方式已不再适用,以下是具体修正方案:
原因分析
在新版ASP.NET Core(包括Razor Pages、MVC视图)中,Request对象不再直接暴露在视图的默认上下文里,需要通过Context对象来访问请求信息。
修正后的Razor视图代码
把原来的Request替换为Context.Request即可:
@{ double distance = 0; if (Context.Request.Query.ContainsKey("distance")) { double.TryParse(Context.Request.Query["distance"], out distance); } }
更规范的Razor Pages写法(推荐)
如果使用Razor Pages,建议把业务逻辑放到页面模型文件(如Index.cshtml.cs)中,视图仅负责展示:
页面模型代码(Index.cshtml.cs)
using Microsoft.AspNetCore.Mvc.RazorPages; namespace YourNamespace.Pages { public class IndexModel : PageModel { public double Distance { get; set; } public void OnGet() { if (Request.Query.ContainsKey("distance")) { double.TryParse(Request.Query["distance"], out Distance); } } } }
视图代码(Index.cshtml)
@page @model IndexModel <p>Enter distance:</p> <form method="get"> <input type="text" name="distance" /> <button type="submit">Calculate</button> </form> @if (Model.Distance > 0) { <p>输入的距离是: @Model.Distance</p> }
你的HTML表单部分没有问题,method="get"和name="distance"的设置正确,修正C#代码后即可正常获取用户输入。
内容的提问来源于stack exchange,提问作者lune_star
相关产品推荐
相关产品推荐

