DevExpress GridView EditFormTemplate密码字段

DevExpress GridView EditFormTemplate密码字段,gridview,passwords,devexpress,mvcextensions,Gridview,Passwords,Devexpress,Mvcextensions,我正在使用DevExpress GridView弹出式编辑表单。 在我的型号中,密码和确认密码字段是必需的。当用户编辑记录时,我使用下面给定的标记将控件标记为可见或不可见,因为管理员用户在创建用户后不允许更改密码,但我的modelState仍然无效,并表示即使密码不可见,在编辑模式下也需要密码 我正在使用MVC扩展19.1 Html.DevExpress().FormLayout(settings => { var rlUserId

我正在使用DevExpress GridView弹出式编辑表单。 在我的型号中,密码和确认密码字段是必需的。当用户编辑记录时,我使用下面给定的标记将控件标记为可见或不可见,因为管理员用户在创建用户后不允许更改密码,但我的modelState仍然无效,并表示即使密码不可见,在编辑模式下也需要密码

我正在使用MVC扩展19.1

        Html.DevExpress().FormLayout(settings =>
        {
            var rlUserId = Convert.ToInt32(DataBinder.Eval(c.DataItem, "RLUserId"));
            settings.Name = "FormLayoutRLUsers";
            settings.Width = Unit.Percentage(100);
            settings.SettingsAdaptivity.AdaptivityMode = 
            FormLayoutAdaptivityMode.SingleColumnWindowLimit;
            settings.SettingsAdaptivity.SwitchToSingleColumnAtWindowInnerWidth = 700;
            settings.ColCount = 2;

            settings.Items.Add(i =>
            {
                i.FieldName = "LastName";
                i.NestedExtension().TextBox(tx =>
                {
                    AssignTextBoxSettings(tx);
                });
            });
            settings.Items.Add(i =>
            {
                i.FieldName = "FirstName";
                i.NestedExtension().TextBox(tx =>
                {
                    AssignTextBoxSettings(tx);
                });
            });               
           settings.Items.Add(i =>
            {
                i.FieldName = "Password";
                i.NestedExtension().TextBox(tx =>
                {
                    tx.Properties.Password = true;
                    if (rlUserId > 0)
                    {
                        i.Visible = false;
                        tx.ClientVisible = false;
                    }
                    else
                    {
                        i.Visible = true;
                        AssignTextBoxSettings(tx);
                        tx.ClientVisible = true;
                    }
                });
            });
            settings.Items.Add(i =>
            {
                i.FieldName = "ConfirmPassword";
                i.NestedExtension().TextBox(tx =>
                {
                    tx.Properties.Password = true;
                    if (rlUserId > 0)
                    {
                        i.Visible = false;
                        tx.ClientVisible = false;
                    }
                    else
                    {
                        i.Visible = true;
                        AssignTextBoxSettings(tx);
                        tx.ClientVisible = true;                       
                    }
                });
            });​                
            settings.Items.Add(i =>
            {
                i.ShowCaption = DefaultBoolean.False;
            }).SetNestedContent(() =>
            {
                ViewContext.Writer.Write("<div style='float:right'>");
                Html.DevExpress().Button(btnSettings =>
                {
                    btnSettings.Name = "btnUpdate";
                    btnSettings.Text = "Update";
                    btnSettings.ClientSideEvents.Click = "function(s, e){ gridView.UpdateEdit(); }";
                }).Render();
                Html.DevExpress().Button(btnSettings =>
                {
                    btnSettings.Name = "btnCancel";
                    btnSettings.Text = "Cancel";
                    btnSettings.Style[HtmlTextWriterStyle.MarginLeft] = "5px";
                    btnSettings.ClientSideEvents.Click = "function(s, e){ gridView.CancelEdit(); }";
                }).Render();
                ViewContext.Writer.Write("</div>");
            });
        }).Bind(ViewData["EditableUser"] ?? GetEditingUser(c.Grid))
        .Render();
Html.DevExpress().FormLayout(设置=>
{
var rlUserId=Convert.ToInt32(datainder.Eval(c.DataItem,“rlUserId”);
settings.Name=“formlayoutrusers”;
设置宽度=单位百分比(100);
settings.SettingsAdaptivity.AdaptivityMode=
FormLayoutAdaptivityMode.SingleColumnWindowLimit;
settings.SettingsAdaptivity.SwitchToSingleColumnAtWindowInnerWidth=700;
settings.ColCount=2;
settings.Items.Add(i=>
{
i、 FieldName=“LastName”;
i、 NestedExtension().TextBox(tx=>
{
分配文本框设置(tx);
});
});
settings.Items.Add(i=>
{
i、 FieldName=“FirstName”;
i、 NestedExtension().TextBox(tx=>
{
分配文本框设置(tx);
});
});               
settings.Items.Add(i=>
{
i、 FieldName=“密码”;
i、 NestedExtension().TextBox(tx=>
{
tx.Properties.Password=true;
如果(rlUserId>0)
{
i、 可见=假;
tx.ClientVisible=false;
}
其他的
{
i、 可见=真实;
分配文本框设置(tx);
tx.ClientVisible=true;
}
});
});
settings.Items.Add(i=>
{
i、 FieldName=“ConfirmPassword”;
i、 NestedExtension().TextBox(tx=>
{
tx.Properties.Password=true;
如果(rlUserId>0)
{
i、 可见=假;
tx.ClientVisible=false;
}
其他的
{
i、 可见=真实;
分配文本框设置(tx);
tx.ClientVisible=true;
}
});
});​                
settings.Items.Add(i=>
{
i、 ShowCaption=DefaultBoolean.False;
}).SetNestedContent(()=>
{
ViewContext.Writer.Write(“”);
Html.DevExpress()按钮(BTN设置=>
{
btnSettings.Name=“btnUpdate”;
btnSettings.Text=“更新”;
btnSettings.ClientSideEvents.Click=“函数(s,e){gridView.updatedit();}”;
}).Render();
Html.DevExpress()按钮(BTN设置=>
{
btnSettings.Name=“btnCancel”;
btnSettings.Text=“取消”;
btnSettings.Style[HtmlTextWriterStyle.MarginLeft]=“5px”;
btnSettings.ClientSideEvents.Click=“函数(s,e){gridView.CancelEdit();}”;
}).Render();
ViewContext.Writer.Write(“”);
});
}).Bind(ViewData[“EditableUser”]??GetEditingUser(c.Grid))
.Render();

有许多解决方案,如:

  • 在检查模型状态之前,可以像这样删除字段 删除(“密码”)

  • 您可以根据角色或用户即将访问的页面设置此密码字段。 您可以在查看包中发送/存储值

  • 更新时,可以将密码字段设置为只读或禁用

  • 在devexpress网站上已经有各种各样的演示来阅读这种基本的东西。请看一下那里