Um dieses Ziel im gegebenen Szenario zu erreichen, müssen wir zwei Optimierungen vornehmen.
Client-Seite
Um die clientseitige Validierung zu deaktivieren, müssen wir sie mit Gewalt deaktivieren.
@Html.EditorFor(model => model.Password, new { htmlAttributes = new { @data_val = "false" , @class = "form-control"} })
Beachten Sie das @ data_val = "false". Dadurch wird die Validierung in diesem Feld deaktiviert.
Serverseite (in Aktion)
Wenn das Modell in der Post-Aktion überprüft wird, gibt ModelState.IsValid immer false zurück, da kein Kennwort angegeben wird. Hier müssen wir das aktuelle Passwort für das Modell angeben und das Modell erneut validieren.
var userObj = db.Users_Info.Where(a => a.Id == users_Info.Id).FirstOrDefault();
if (String.IsNullOrEmpty(users_Info.Password))
{
users_Info.Password = userObj.Password;
}
ModelState.Clear();
TryValidateModel(users_Info);
Lassen Sie mich erklären, dass wir zuerst die aktuellen Informationen abrufen, die in der Datenbank gespeichert sind und die wir später verwenden, um sie dem aktuellen Modell zuzuweisen, wenn kein Kennwort angegeben ist. Die letzten beiden Zeilen setzen den ModelState tatsächlich zurück, um ein aktualisiertes Ergebnis für ModelState.IsValid zurückzugeben.