c# - 指定名称的 MVC 文本框未在帖子上绑定(bind)模型

标签 c# asp.net-mvc html-helper

这就像这里的 MVC 101,所以我对为什么这不起作用感到完全无助。我有一个非常基本的模型:

public class StockEnrollmentModel
{
    [Required]
    [DisplayName("Employee Name:")]
    public string EmployeeName { get; set; }

}

我的观点如下:

@using (Html.BeginForm("SimulateForm", "HR", FormMethod.Post))
{
<div class="row">
    <div class="col-md-6">
        <div class="form-group">
            @Html.LabelFor(e => e.EmployeeName)
            @Html.TextBox("stock_employee_name", Model.EmployeeName)
        </div>
    </div>
</div>
<button type="submit" class="btn btn-primary" value="Submit">Submit</button>
}

我将发布到的网络服务需要输入字段的特定名称才能成功接收数据

例如,渲染的 html 需要读取:

<input type="stock_employee_name" type="text" /> 

经过多次谷歌搜索后,我确定需要使用 Html.Text 框才能控制生成的名称属性。

我遇到的问题是,当我提交表单时, Controller 中的模型完全没有数据。调查显示,表单以“employee_stock_name=Some Name”而不是“EmployeeName=Some Name”发布到服务器

根据我的研究,这种情况不应该发生,对吧?这种确切的情况应该是您使用 TextBox 而不是 TextBoxFor 的原因。

我错过了什么?

这是我的 Controller 的值(value):

[HttpPost]
    public RedirectToRouteResult SimulateForm(StockEnrollmentModel model )
    {
        if ( ModelState.IsValid )
        {
            return RedirectToAction("SignForm", "HR", model);
        }
        return RedirectToAction("StockPurchase", model );
    }

更新

下面接受的答案是我最终使用的。没有真正的方法可以轻松更改 HTML 字段的名称并维护 MVC 模型绑定(bind)。我最终更改了属性名称以匹配我需要名称字段读取的内容。

最佳答案

HtmlHelper.TextBox的第一个参数function 是由该函数创建的输入元素的名称属性。您将“employee_stock_name”指定为该参数(因此作为输入元素的名称属性),因此这就是通过线路发送的内容。

您应该指定正确的名称:

@Html.TextBox("EmployeeName", Model.EmployeeName)

或者使用HtmlHelper.TextBoxFor自动生成:

@Html.TextBoxFor(m => m.EmployeeName)

关于c# - 指定名称的 MVC 文本框未在帖子上绑定(bind)模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359355/

相关文章:

c# - 文件夹中的多个图像

c# - 在通用方法中传递/指定一个属性?

c# - MVC5 - 如何使用 jquery ajax 将文件上传与模型一起传递给 Controller

asp.net-mvc - Html.Dropdown 的 Html 属性

asp.net-mvc - Html.Label 和 Html.Display 有什么区别?

c# - 基于矩形的寻路

c# - 将对结构的引用添加到 C# 列表中

c# - 从使用当前路由值和模型状态的 Paging UserControl 生成 ActionLink/RouteLink

c# - 如何生成Excel epplus C#新表,每张表内容不同

asp.net-mvc-3 - 在 ASP.NET MVC 3 View 中呈现 System.Drawing.Image 的最佳方式