Wie sende ich deaktivierte Eingaben in ASP.NET MVC?
c#
.net
javascript
asp.net-mvc
Sanchitos
quelle
quelle
Antworten:
Kannst du nicht das Feld machen
readonly="readonly"
anstattdisabled="disabled"
? Ein schreibgeschützter Feldwert wird an den Server gesendet, während er vom Benutzer nicht bearbeitet werden kann. EinSELECT
Tag ist jedoch eine Ausnahme.quelle
<%: 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"
EingabenDanke an alle:
So habe ich das gelöst:
Hinweis:
Ich habe diese Informationen auf der Antwort erhalten, aber ich wurde bearbeitet.
quelle
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".Beispiel:
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 findenselect
.quelle
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.
quelle
Sie können auch Code wie diesen verwenden, bevor das Formular gesendet wird:
quelle
Ajax.BeginForm
?Browser unterstützen dies von Natur aus nicht.
Erstellen Sie sie entweder, um
readonly
Werte an den Server zu senden, oderreadonly
fügen Sie einen CSS-Stil hinzupointer-events: none;
, wenn Sie mit Steuerelementen arbeiten, die noch mit Attributen wie Select verwendet werden können, um sie nicht interaktiv zu machenEine 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:
quelle
Sie können eine Editorvorlage wie die folgende erstellen
CSS
Editor-Vorlage
quelle
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
quelle
Erweitern von Tasos '(": disabled", $ (' # xxxForm ')). removeAttr ("disabled"); Sie können verwenden:
quelle
Dies hilft beim Senden von Modellwerten in ASP.net:
quelle
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.
quelle
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.
quelle
Machen Sie einfach diese Eigenschaft [Erforderlich] im ViewModel, das mit dieser Ansicht verknüpft ist.
quelle