Jquery 验证asp.net mvc4中的动态控件
我正在尝试在asp.net mvc 4应用程序中创建一个动态控件。我想要的是,当我提交时,我想要验证必填字段。因此,假设创建了字段类型Jquery 验证asp.net mvc4中的动态控件,jquery,asp.net-mvc-4,validation,razor,Jquery,Asp.net Mvc 4,Validation,Razor,我正在尝试在asp.net mvc 4应用程序中创建一个动态控件。我想要的是,当我提交时,我想要验证必填字段。因此,假设创建了字段类型复选框,并且它是必需的。我想确保,在提交之前已对此进行检查。我是否需要jquery进行验证,或者可以通过任何其他方式进行验证 查看模型 public class SignupViewModel : IValidatableObject { public List<MembershipControls> Controls { get; set; }
复选框
,并且它是必需的。我想确保,在提交之前已对此进行检查。我是否需要jquery进行验证,或者可以通过任何其他方式进行验证
查看模型
public class SignupViewModel : IValidatableObject
{
public List<MembershipControls> Controls { get; set; }
public List<Groups> Groups { get; set; }
}
查看
@foreach (var groups in Model.Groups)
{
<label style="font-weight:bold">@groups.GroupTitle</label>
<div style=" border: 1px solid #CCCCCC;padding:5px">
@foreach (var row in Model.Controls.Where(r => r.GroupTitle == groups.GroupTitle))
{
<div style="padding:7px">
@if (row.ControlType == "Single Line Text")
{
<label>@row.Caption</label>
<input type="text" name="@row.Name" />
}
else if (row.ControlType == "Multi Line Text")
{
<label>@row.Caption</label>
<textarea name="@row.Name"></textarea>
}
else if (row.ControlType == "Yes/No Choice(Radio Buttons)")
{
<div>
<label>@row.Caption</label>
 
<input type="radio" name="@row.Name" value="Yes" />   Yes
 
<input type="radio" name="@row.Name" value="No" />   No
</div>
}
else if (row.ControlType == "Checkbox")
{
<div>
<input type="checkbox" name="@row.Name"/> @row.Caption
</div>
}
else if (row.ControlType == "Date")
{
<div>
<label>@row.Caption</label>
<input type="date" name="@row.Name"/>
</div>
}
</div>
}
</div>
}
@foreach(Model.groups中的变量组)
{
@groups.GroupTitle
@foreach(Model.Controls.Where(r=>r.GroupTitle==groups.GroupTitle))中的var行)
{
@if(row.ControlType==“单行文本”)
{
@行。标题
}
else if(row.ControlType==“多行文本”)
{
@行。标题
}
else if(row.ControlType==“是/否选项(单选按钮)”)
{
@行。标题
 
&是的
 
 否
}
else if(row.ControlType==“复选框”)
{
@行。标题
}
else if(row.ControlType==“日期”)
{
@行。标题
}
}
}
我的建议是首先创建一个局部视图,而不是创建一个动态控件;其次,有很多方法可以用来验证该局部视图
您可以使用
DataAnnotations
进行服务器端验证,也可以使用untrustive
jQuery
进行客户端验证。只需为所有动态控件分配一个类,例如validate,通过为所有类型的控件编写一个公共验证函数,您就可以使用jQuery轻松地完成这项工作控制。下面的代码为您提供了一个关于如何继续的简要想法
$("input[type=submit]").click(function () {
$(".validate").each(function () {
//Textbox validation
if ($(this).is("input[type=text]")) {
//validation logic for textbox
}
//TextArea Validation
if ($(this).is("textarea")) {
//validation logic for TextArea
}
//RadioButton Validation
if ($(this).is("input[type=radio]")) {
//validation logic for RadioButton
}
//Checkbox Validation
if ($(this).is("input[type=checkbox]")) {
//validation logic for Checkbox
}
//Date Validation
if ($(this).is("input[type=date]")) {
//validation logic for Date field
}
});
});
当从控制器传递数据时,如果必填字段不是必填字段,则将其设置为“空”,否则将该字段设置为Mandatory=“validate”代码>如果该字段为必填字段,则会自动添加该类
在您的视图中,您可以向所有控件添加一行class=“@row.Mandatory”
为了有条件地添加该类,我为textbox创建了该类,并将其应用于其他控件。
例如
希望这有帮助:)你想做的事毫无意义。。。您想将asp.mvc视图定义移动到奇怪的“动态控件”中。别这样!建立动态控制是我的要求。基本上,我需要给用户一个选项来定义他们想要在表单上构建什么样的控件。是的,但是我的控件是动态的,它们的名称是模态的。如何在jquery中访问它们?我认为验证可能不需要字段的名称,在循环创建字段时,仅当类“validate”是必填字段时才添加它。然后单击submit,它将找到该类的所有可见元素并对其进行验证,验证时不需要任何控件的名称。您可以在此处放置一些代码吗?我有点困惑,在创建新控件时,如何添加类进行验证?您可以在post中查看我的查看代码以供参考
$("input[type=submit]").click(function () {
$(".validate").each(function () {
//Textbox validation
if ($(this).is("input[type=text]")) {
//validation logic for textbox
}
//TextArea Validation
if ($(this).is("textarea")) {
//validation logic for TextArea
}
//RadioButton Validation
if ($(this).is("input[type=radio]")) {
//validation logic for RadioButton
}
//Checkbox Validation
if ($(this).is("input[type=checkbox]")) {
//validation logic for Checkbox
}
//Date Validation
if ($(this).is("input[type=date]")) {
//validation logic for Date field
}
});
});