DevExpress GridView Поле ввода пароля EditFormTemplate - PullRequest
0 голосов
/ 04 октября 2019

Я использую форму редактирования всплывающего окна DevExpress GridView. В моей модели поля Password и ConfirmPassword обязательны для заполнения. Когда пользователь редактирует запись, я использую указанную ниже разметку, чтобы пометить элементы управления как видимые или невидимые, поскольку администратор не может изменять пароль после создания пользователя, но мой 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();
...