客户端验证不适用于C#MVC4中的HTML编辑器

时间:2014-01-24 10:12:20

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

实际上我在c#MVC4架构中工作,我也在使用newget,我在我的应用程序中安装tinymce包,在公司模型属性名称中,AboutCompany和Company配置文件具有必需的注释,但它不在客户端工作。

请参阅以下代码 这是我的模特。

public class BusinessProfile
{
   [Required(ErrorMessage = "Please enter About Company")]
    [Display(Name = "About Company : ")]
    [UIHint("tinymce_jquery_full"), AllowHtml]
    public string txtAboutCompany { get; set; }

    [Required(ErrorMessage = "Please enter Company Name")]
    [Display(Name = "Company Name : ")]
    public string companyname{get;set;}

}

这是我的视图意味着HTML代码

 <div>
  @Html.LabelFor(model => model.txtBusinesstitle, new { @class = "required" })
  @Html.EditorFor(model => model.txtBusinesstitle)
  @Html.ValidationMessageFor(model => model.txtBusinesstitle)
</div>

当我提交此表单时,验证消息不会显示特定消息, 我也加载了jquery包,并提供了脚本但不能正常工作

 @section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
 }

3 个答案:

答案 0 :(得分:0)

您必须从webconfig文件启用客户端验证和不显眼的验证。

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

还要检查您使用此捆绑包引用〜/ bundles / jqueryval 的脚本。

并检查您的浏览器会抛出哪些js错误。

答案 1 :(得分:0)

您可能必须创建自定义jquery验证程序。 必需属性的工作方式是它依赖于jquery验证插件。

如果查看生成的html源代码,您将看到帮助器(例如Html.EditorFor)为使用Required注释的属性生成的输入将具有class =“required”或仅需要一个属性在他们。

jquery验证通过jquery选择器(这是不引人注目的部分)来获取它们

我敢打赌,tinymce包的model属性没有使用 EditorFor 或等效的帮助器进行渲染。您仍然可以使用jquery验证思想。如果它只是一个普通的输入(我不太熟悉tinymce),只要确保它有class =“required”或者只是一个必需的属性(两者都可以)。

如果它不是正常输入,您始终可以创建自己的jquery验证器。这是一个非常简单的例子:

$.validator.addMethod("custom", function(value){
    return value != "1";        
}, "default custom error message");

你使用它的方式只是放置class =“custom”或者只是这样做 <input name="x" custom/>

这是一个fiddle that shows the above example working,还有一个更精细的展示{h} {/ 3>}。

control highlights and other nice features of jquery validation

答案 2 :(得分:0)

您需要在jQuery表单中包含值。

MVC验证要求验证字段位于使用任何Html.BeginForm()重载创建的MVC表单内,因为它需要FormContext See this Q&A from more info

您还需要确保在web.config中启用了客户端验证:

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>