Я использую форму редактирования всплывающего окна 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();