Jak przesłać wyłączone dane wejściowe w ASP.NET MVC?
c#
.net
javascript
asp.net-mvc
Sanchitos
źródło
źródło
Odpowiedzi:
Nie możesz zrobić pola
readonly="readonly"
zamiastdisabled="disabled"
? Wartość pola tylko do odczytu zostanie przesłana na serwer, podczas gdy użytkownik nadal nie będzie mógł jej edytować.SELECT
Znacznik jest wyjątek chociaż.źródło
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>
jak mogę to wyszarzać, aby wyglądało na to, że nie można go edytować. Jeszcze lepiej, czy możemy użyć czegoś podobnego do LabelFor, próbowałem LabelFor, ale dostaje tylko DisplayName ....type="checkbox"
danych wejściowychDziękuję wszystkim:
Sposób, w jaki rozwiązałem ten problem:
Uwaga:
Mam te informacje na temat odpowiedzi, ale zostały poprawione.
źródło
textBox.Attributes.Add("readonly", "readonly");
a wyjaśnienie jest w linku$("#textBoxId").css("color", "#c0c0c0")
.@ppumkin wspomniał o tym w swoim komentarzu do tej odpowiedzi, ale chciałem to podkreślić, ponieważ nie mogłem znaleźć innych zasobów dotyczących przesyłania danych od osoby niepełnosprawnej
<select>
. Uważam również, że jest to istotne dla pytania, ponieważ wybrane elementy nie są<input>
s, ale są „ danymi wejściowymi”.Przykład:
Uwaga: spowoduje to umieszczenie na stronie dwóch tagów o tym samym identyfikatorze, który nie jest w rzeczywistości poprawnym kodem HTML i może powodować ból głowy przy korzystaniu z JavaScript. Dla mnie mam javascript, aby ustawić wartość listy rozwijanej według jego html
id
, a jeśli umieścisz ukryte pole jako pierwsze, javascript znajdzie to zamiastselect
.źródło
Zwykle, jeśli mam pole, które jest „tylko do odczytu”, ale musi zostać przesłane z powrotem na serwer, wyłączam wyświetlanie (lub po prostu tekst), a następnie dodam ukryte pole o tej samej nazwie. Nadal musisz upewnić się, że pole nie jest faktycznie modyfikowane po stronie serwera - po prostu nie aktualizuj go z modelu w akcji - ale stan modelu będzie nadal dokładny, jeśli wystąpią błędy.
źródło
Możesz również użyć takiego kodu przed przesłaniem formularza:
źródło
Ajax.BeginForm
?Z założenia przeglądarki tego nie obsługują.
Albo utwórz je,
readonly
co pozwoli na przesyłanie wartości do serwera lub jeśli masz do czynienia z kontrolkami, które są nadal użyteczne zreadonly
atrybutem, takim jak Wybierz, dodaj styl csspointer-events: none;
aby były nieinteraktywneCoś w rodzaju włamania, ale działa! Działa również, gdy przesyłasz formularz bezpośrednio za pomocą przycisku przesyłania bez użycia JavaScript. Żadna dodatkowa praca nie jest wymagana!
Na przykład:
źródło
Możesz utworzyć szablon edytora, taki jak ten poniżej
CSS
Szablon edytora
źródło
gdy mamy do czynienia z wyłączonymi, ale zaznaczonymi polami wyboru i chcemy opublikować wartość, musimy upewnić się, że nasze ukryte pole pojawia się przed ukrytym polem @ Html.CheckBoxFor.
poniżej znajduje się link, z którego znalazłem odpowiedź. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
źródło
rozwijanie Tasos '(": disabled", $ (' # xxxForm ')). removeAttr ("disabled"); możesz użyć:
źródło
Pomoże to w przesłaniu wartości modeli w ASP.net:
źródło
Zwykle używam tego sposobu dla CheckBox lub CheckBoxFor, ponieważ wyłączenie go powoduje utratę wartości. Tylko do odczytu nie działa również na polu wyboru.
źródło
Po prostu umieść ten skrypt w skryptach @section na swojej stronie. umożliwi to wprowadzanie danych podczas przesyłania strony, a po przesłaniu należy przekierować użytkownika na inną stronę.
źródło
Po prostu ustaw tę właściwość [Wymagane] w ViewModel połączonym z tym widokiem.
źródło