如何在 MVC 中使文本框可选

Posted

技术标签:

【中文标题】如何在 MVC 中使文本框可选【英文标题】:How to make textbox optional in MVC 【发布时间】:2020-09-30 10:07:28 【问题描述】:

我一直在试图弄清楚如何使文本框成为可选。我已经尝试过 javascript 方法 (value).removeAtt('required')。我也尝试从 ViewModel 中删除 [Required] ,但是当您输入文本时,它在数据库中显示为空。 我还有什么其他方法可以解决这个问题。

视图模型

[Required]
[Display(Name="comment")]
public string commentget; set;]

控制器

public ActionResult Edit(QuestionToAnswerViewModel questionToAnswerVm)
        
            var questionToAnswer = _questionAnswerService.GetAnswerById(questionToAnswerVm.QuestionId);

            if (ModelState.IsValid)
            

                if(questionToAnswerVm.AdditionalComment != null)
                
                    questionToAnswer.Comment = questionToAnswerVm.AdditionalComment;
                
                else
                
                    questionToAnswer.Comment = null;
                

查看

    <div id ="additionalComment" class="form-group">
        @html.LabelFor(model => model.AdditionalComment,htmlAttributes: new  @class = "control-label col-md-2")
        <div class="col-md-10">
            @Html.TextBoxFor(model => model.AdditionalComment,new  @class = "form-control")

        </div>
    </div

【问题讨论】:

你是说当你加载视图时你会在文本框中看到 NULL 吗?或者您是说当您在文本框中输入内容时它没有保存该字段?我认为我们需要查看更多的视图和控制器代码来确定为什么你总是得到 null,但是删除 [Required] 是你想要做的 @mathis1337 它不保存该字段。那是我从视图模型中删除所需内容的时候。 删除必填项后能否在字段末尾添加 .Value? @mathis1337 是的。但它没有显示在数据库中。 哦,您也在使用 EF,所以在删除所需的内容后,您需要创建一个迁移并将其迁移到数据库。否则我认为它不能保存到数据库中 【参考方案1】:

如果您仍然在 Models/View Models 中指定 required 属性 将您的模型文件指定为

public string? comment get;set;

您也可以在 application_onstart 事件中的 global.asax 文件中指定这一行

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

【讨论】:

【参考方案2】:

需要检查的几件事

    从模型中删除所需。 检查 id 是否与视图和模型匹配。 在控制器中放置一个断点并检查值是否从视图传递到控制器。

【讨论】:

以上是关于如何在 MVC 中使文本框可选的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Dlookup 文本框可写

如何使用 jQuery UI 插件使 html 文本框可拖动和调整大小?

写一个java GUI界面,有个文本框可输入文本,按个按钮之后输出到文件中

前端文本框与下拉框可自由切换吗

如何在打字过程中使文本框旋转 90(垂直)?

在文本框中使单词加粗