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

C# MVC表单无法向控制器回传数据,求问题原因

问题原因及解决方案

核心原因

你的视图中使用了asp-for标签助手,但未在视图顶部声明对应的模型类,导致asp-for无法生成正确的name属性。HTML表单仅会提交带有name属性的元素值,因此控制器的FormCollection中没有数据。此外,phoneNumber字段使用type="number"并不合理——电话号码常包含+、-等非数字字符,浏览器会拒绝提交不符合格式的内容,也可能导致数据丢失。

解决步骤

1. 创建表单视图模型

在项目中新建视图模型类,用于绑定表单数据:

public class FormViewModel
{
    public int OrganizationID { get; set; }
    public int ExternalPersonalID { get; set; }
    public string PhoneNumber { get; set; } // 改用string类型存储电话号码
}

2. 修改视图代码

在视图顶部添加模型声明,同时调整phoneNumber的输入类型:

@model 你的项目命名空间.FormViewModel

@using (@Html.BeginForm("ReceiveForm1", "Home", FormMethod.Post))
{
    <div class="form-group">
        <label for="OrganizationID">Organization ID</label>
        <input type="number" class="form-control" asp-for="OrganizationID" aria-describedby="emailHelp" placeholder="Enter Organization ID">
    </div>
    <div class="form-group">
        <label for="ExternalPersonalID">External Personal ID</label>
        <input type="number" class="form-control" asp-for="ExternalPersonalID" placeholder="Enter External Personal ID">
    </div>
    <div class="form-group">
         <label for="PhoneNumber">Phone Number</label>
         <input type="text" class="form-control" asp-for="PhoneNumber" placeholder="Enter Phone Number">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
}

注:asp-for会自动生成与模型属性名一致的name和id属性,确保表单数据能被正确提交到服务器。

3. 优化控制器代码

直接使用视图模型接收表单数据,比FormCollection更简洁且类型安全:

[HttpPost]
public ActionResult ReceiveForm1(FormViewModel model)
{
    // 直接通过model.OrganizationID、model.ExternalPersonalID、model.PhoneNumber获取数据
    IEnumerable<Form1Return> personData = GetPersonInformation(model);
    return View(personData);
}

若坚持使用FormCollection,只要视图生成了正确的name属性,就能在collection中获取到对应键值对。

4. 验证表单渲染结果

运行项目后查看页面源代码,确认每个input元素都包含name属性,示例如下:

<input type="number" class="form-control" id="OrganizationID" name="OrganizationID" aria-describedby="emailHelp" placeholder="Enter Organization ID">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:51:26