文本框验证根据下拉值工作

时间:2016-09-05 10:50:36

标签: c# jquery asp.net-mvc

我有一个下拉列表,其中有3个选项可用:

  • '已取消'
  • '推迟'
  • '其他'

我希望如果用户选择“其他”选项,则“注释”文本框是必需的,否则“注释”文本框不是必需的,

以下是我在View Model

中的验证码
[Required(ErrorMessage="Please Enter Comment")]
public string Comment { get; set; }

这是我在视图中的下拉列表和验证码

@Html.DropDownList("Reason", new List<SelectListItem>()
{
    new SelectListItem() { Text= "Event Cancelled", Value = "Cancelled" },
    new SelectListItem() { Text= "Event  PostPoned", Value = "PostPoned" },
    new SelectListItem() { Text= "Other", Value = "Other" }    
}, "--Select Cancellation Reason --", new { @class = "form-control"})
@Html.ValidationMessageFor(model => model.Reason, "", new { @class = "text-danger" })

如果只在选择其他评论时,如何强制进行评论?

2 个答案:

答案 0 :(得分:0)

您可以在post方法中执行此操作(如果需要)

Public ActionResult AssumeThisAsYourPostMethod(YourModel modelObject)
{
  if(modelObject.Reason=="Other" && String.IsNullOrEmpty(modelObject.Comment) )
  {
    ModelState.AddModelError("Comment","Your Validation Message");
    return View("YourViewName");
  }
}

答案 1 :(得分:0)

在更改事件上使用jQuery,如果select的值为“Other”,则将所需属性添加到注释框。

$("body").on('change', "#Reason", function () {
   var Reason= $(this).val().trim() ;
   if (Reason == 'Other')
    {
     $("input[name = Comment]").prop('required',true);
    } 
   });