来自 JQuery 填充字段的值未绑定到 MVC 模型

Posted

技术标签:

【中文标题】来自 JQuery 填充字段的值未绑定到 MVC 模型【英文标题】:Value from JQuery populated field not binding to MVC model 【发布时间】:2019-01-03 12:02:09 【问题描述】:

我正在使用 Razor 使用 ASP.NET MVC 开发一个项目。一旦表单在页面上完成加载,我希望用户在输入中触发.on ('change')。一旦发生这种情况,就会执行 AJAX 调用,返回用户的数据,禁用并填充链接到模型属性的输入,该模型的属性开始为空(加载页面时)。

数据填充没有问题,但是当我将其发送回控制器进行处理时,对应于 AJAX 执行后填充的输入的值到达为 null。

<div class="form-label-group col-md-4 mb-3">
    @html.LabelFor(model => model.AttendeeName, new  @class = "upside-label", @for = "firstName" )
    @Html.EditorFor(model => model.AttendeeName, new  htmlAttributes = new  @class = "form-control", @id = "firstName", @placeholder = Resources.ResourcesPerson.PlaceholderPersonName  )
    @Html.LabelFor(model => model.AttendeeName, new  @class = "downside-label", @for = "firstName" )
    <div class="text-danger">
        @Html.ValidationMessageFor(model => model.AttendeeName)
    </div>
</div>

我尝试了以下方法但没有成功:

$("input[name=AttendeeName]").attr('disabled', true);
$("input[name=AttendeeName]").val(data.AttendeeName).change()

感谢您的帮助。

【问题讨论】:

这是预期行为。 disabled 元素不会在表单数据中发送。如果您仍希望发送这些值,请不要禁用这些字段。如果您不想让用户编辑它们,可以尝试使用readonly 我已经完全忘记了……我已经把一些很简单的事情变得太复杂了哈哈哈。您给出了正确的答案,将您的评论作为答案将其标记为解决方案。非常感谢@RoryMcCrossan 完全没问题。我给你加了 如果您想禁用某个字段,请使用$("selector").attr("disabled", "disabled")disabled 是一个布尔属性,意味着它存在时为true,不存在时为false。或者,您可以使用$("selector).prop("disabled", true),它访问元素的 DOM 对象。 【参考方案1】:

这是预期的行为。 disabled 元素不会在表单数据中发送。

如果您仍希望发送这些值,请不要禁用这些字段。假设您不希望用户编辑字段,则可以尝试 readonly

$('input[name="AttendeeName"]').prop('readonly', true);

【讨论】:

以上是关于来自 JQuery 填充字段的值未绑定到 MVC 模型的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 3 中,Jquery 令牌输入未填充数据库中的值

无法绑定来自 jquery 数据库中 json 值的下拉列表值

datetimepicker 值未绑定到带有 thymeleaf 的属性 spring

ASP.NET MVC 使用视图中的值填充 DropDownList

JQuery 使用来自选定表行的数据填充表单字段

Svelte 绑定选择值未在获取时更新