如何在 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 中使文本框可选的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery UI 插件使 html 文本框可拖动和调整大小?