gpt4 book ai didi

c# - 指定名称的 MVC 文本框未在发布时绑定(bind)模型

转载 作者:行者123 更新时间:2023-11-30 21:57:59 26 4
gpt4 key购买 nike

这就像这里的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com