MVC @ Html.TextArea用于验证不起作用

时间:2016-05-09 15:48:05

标签: javascript asp.net-mvc validation asp.net-mvc-4

我在包含textBox和textArea的表单上遇到问题。该论坛处于共享视图中。 textBox正在验证,但textArea不是。我经历过其他人面临的许多问题,似乎无法解决它。我在我的应用程序中创建了另一个表单,并且验证在textArea上进行了

表单是动态创建的问题页面。

@for (var i = 0; i < Model.QuestionAnswers.Count; i++)
{
        @switch (Model.QuestionAnswers[i].QuestionType)
        {
            case QuestionTypeEnum.SentenceRequired:
                @Html.TextAreaFor(m => m.QuestionAnswers[i].Answer, 5, 20, new { @class = "input-xlarge persistLocal",
                required = "required" })
                break;


            case QuestionTypeEnum.TextBoxRequired:
                @Html.TextBoxFor(m => m.QuestionAnswers[i].Answer, new {@class = "input-xlarge persistLocal", required = "required" })
                break;
         }
}

这是我的模型,我没有在模型上使用属性,因为在生成表单时,不需要一些问题。我试过这个,它仍然无法正常工作。

 public class QuestionAnswerViewModel
{

    public List<QuestionAnswer> QuestionAnswers { get; set; }
}

/// <summary>
/// 
/// </summary>
public class QuestionAnswer
{
    public string Answer { get; set; }

    public string Question { get; set; }

    public int PermitRequestTypeQuestionId { get; set; }

    public QuestionTypeEnum QuestionType { get; set; }

    public int AnswerId { get; set; }


    [DisplayName("Question")]
    public string QuestionAndAnswerText
    {
        get { return string.Format("{0} <strong>{1}</strong>", Question, Answer); }
    }
}

这是我的论坛的屏幕截图

Forum

这些是加载到视图中的脚本

enter image description here

在父视图中,我尝试添加此项以尝试强制验证      $ .validator.unobtrusive.parse( “#表格名称”);

这是控制台上的输出 enter image description here

我想也许这两个textarea标签之间可能有一些空白区域,但它似乎没有,并且javascript控制台窗口中没有错误,正如我之前所说,它适用于文本框。我也尝试将其更改为EditFor并更改了model属性以使用multiline属性和required属性,但仍然没有乐趣。

非常感谢任何正确方向的帮助,谢谢

3 个答案:

答案 0 :(得分:1)

尝试将[Required]属性添加到属性的模型中。

这样的事情:

[Required]
public string Answer { get; set; }
[Required]
public string Question { get; set; }

答案 1 :(得分:1)

因为我没有从这个局部视图回发到服务器,所以这条Javascript用于验证局部视图

        var validator = $("form").validate(); // obtain validator
            var anyError = false;
            $step.find("input").each(function() {
                if (!validator.element(this)) { // validate every input element inside this step
                    anyError = true;
                }

            });

            if (anyError)
                return false; // exit if any error found

JQuery没有拿起textArea,因为它没有出现。

$step.find("input,textarea").each(function()

答案 2 :(得分:0)

尝试用EditorFor替换TextAreaFor。由于您的模型已经设置了多行标记,这不应该影响您的UI,但它应该解决TextAreaFor的潜在(以及某些版本的过去记录)错误。