Wie sende ich deaktivierte Eingaben in ASP.NET MVC?
Wie sende ich deaktivierte Eingaben in ASP.NET MVC?
Antworten:
Kannst du nicht das Feld machen readonly="readonly"anstatt disabled="disabled"? Ein schreibgeschützter Feldwert wird an den Server gesendet, während er vom Benutzer nicht bearbeitet werden kann. Ein SELECTTag ist jedoch eine Ausnahme.
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>Wie kann ich es so grau ausgrauen, dass es so aussieht, als ob es nicht bearbeitet werden kann? Besser noch können wir etwas ähnliches wie LabelFor verwenden, ich habe LabelFor ausprobiert, aber es bekommt nur den DisplayName ....
type="checkbox"Eingaben
Danke an alle:
So habe ich das gelöst:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
Hinweis:
Ich habe diese Informationen auf der Antwort erhalten, aber ich wurde bearbeitet.
textBox.Attributes.Add("readonly", "readonly");und die Erklärung ist im Link
$("#textBoxId").css("color", "#c0c0c0").
@ppumkin erwähnte dies in seinem Kommentar zu dieser Antwort, aber ich wollte es hervorheben, da ich keine anderen Ressourcen zum Senden von Daten von einem Behinderten finden konnte <select>. Ich glaube auch, dass es für die Frage relevant ist, da Auswahl nicht <input>s ist, sondern "Eingabe".
Fügen Sie einfach ein ausgeblendetes Feld für die deaktivierte Auswahl hinzu und sortieren Sie alles.
Beispiel:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
Achtung: Dadurch werden zwei Tags mit derselben ID auf die Seite gesetzt. Dies ist kein wirklich gültiger HTML-Code und kann mit Javascript Kopfschmerzen verursachen. Für mich habe ich Javascript, um den Wert des Dropdowns durch sein HTML festzulegen id, und wenn Sie das versteckte Feld an die erste Stelle setzen, wird das Javascript dies anstelle des finden select.
Wenn ich ein Feld habe, das "schreibgeschützt" ist, aber an den Server zurückgesendet werden muss, deaktiviere ich normalerweise die Anzeige (oder einfach nur Text), füge dann aber ein verstecktes Feld mit demselben Namen hinzu. Sie müssen weiterhin sicherstellen, dass das Feld auf der Serverseite nicht tatsächlich geändert wird - aktualisieren Sie es in Ihrer Aktion nur nicht über das Modell -, aber der Modellstatus ist bei Fehlern weiterhin korrekt.
Sie können auch Code wie diesen verwenden, bevor das Formular gesendet wird:
$(":disabled", $('#frmMain')).removeAttr("disabled");
Ajax.BeginForm?
Browser unterstützen dies von Natur aus nicht.
Erstellen Sie sie entweder, um readonlyWerte an den Server zu senden, oder readonlyfügen Sie einen CSS-Stil hinzu pointer-events: none;, wenn Sie mit Steuerelementen arbeiten, die noch mit Attributen wie Select verwendet werden können, um sie nicht interaktiv zu machen
Eine Art Hack, funktioniert aber! Dies funktioniert auch, wenn Sie ein Formular direkt mit der Schaltfläche "Senden" senden, ohne Javascript zu verwenden. Keine zusätzliche Arbeit erforderlich!
Z.B:
<select asp-for="TypeId"
asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
class="form-control form-control-sm"
readonly
style="pointer-events: none;">
</select>
Wenn wir mit deaktivierten, aber aktivierten Kontrollkästchen arbeiten und den Wert veröffentlichen möchten, müssen wir sicherstellen, dass unser verstecktes Feld vor dem versteckten Feld @ Html.CheckBoxFor angezeigt wird.
Es folgt der Link, über den ich die Antwort gefunden habe. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
Erweitern von Tasos '(": disabled", $ (' # xxxForm ')). removeAttr ("disabled"); Sie können verwenden:
$("#xxxForm").submit(function (e) {
e.preventDefault();
var form = this;
$('#Field1')[0].disabled = false;
$('#Field2')[0].disabled = false;
...
$('#FieldN')[0].disabled = false;
form.submit(); // submit bypassing the jQuery bound event
});
Dies hilft beim Senden von Modellwerten in ASP.net:
$("#iD").attr("style", "pointer-events: none;background-color:rgb(220,220,220)");
Normalerweise verwende ich diese Methode für CheckBox oder CheckBoxFor, da das Deaktivieren dazu führt, dass der Wert verloren geht. Readonly funktioniert auch nicht mit Kontrollkästchen.
@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)
Fügen Sie dieses Skript einfach in @section-Skripte auf Ihrer Seite ein. Dadurch werden Eingaben aktiviert, wenn Sie die Seite senden, und Sie sollten den Benutzer nach dem Senden auf eine andere Seite umleiten.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js">
$("form").submit(function () {
if ($('form').valid()) {
$("input").removeAttr("disabled");
}
});
</script>