Kiedy mogę przesłać jeden formularz z widoku, w jaki sposób mogę również odczytać dane kontrolera w innym formularzu na tej samej stronie?MVC asp.net: Przesyłanie wielu formularzy
Odpowiedz
Po przesłaniu formularza za pomocą przeglądarki prześle dane tylko dla pól w ramach tego <formularza> </formularz >. Dzieje się tak niezależnie od technologii back-end, którego używasz, czy to ASP.net, MVC.net, PHP, Python, itp
Tylko dwie opcje mogę naprawdę myśleć byłoby:
- Wykonuj WebForms i po prostu umieść na całej stronie <formularz>, a następnie uporządkuj wyniki na podstawie tego, który przycisk zostanie naciśnięty.
- Użyj Javascript/AJAX, aby zebrać dowolne dane i podnieś je w dowolny sposób. Możesz nawet zrobić to w czasie rzeczywistym (np. Gdy zaznaczone jest pole wyboru) i nie spowodować odświeżenia strony.
Oczywiście, każdy ma swoje zalety i wady, ale taka jest natura bestii.
Dziękujemy za udział. pomógł mi zrozumieć, jak mam sobie poradzić z wprowadzaniem danych za pomocą asp.net mvc – MikeJ
Nie możesz. Jeśli masz informacje na stronie, którą chcesz przesłać, musisz dołączyć ją do przesłanego formularza. Możesz jednak użyć JavaScript do skopiowania informacji z jednego formularza do drugiego podczas przesyłania.
Można to zrobić na stronie klienta z kombinacji Ajax i JavaScript ...
<SCRIPT language="JavaScript">
function submitforms()
{
new Ajax.Request(formUrl,
{
parameters: $H({param1:value,param2:value}).toQueryString(),
method: 'post',
onSuccess: function(transport) {
document.myform.submit();
}
}
}
</SCRIPT>
var formData1 = $("#form1").serializeObject();
var formData2 = $("#form2").serializeObject();
$.extend(formData1, formData2);
var formData = JSON.stringify(formData1);
$.ajax({
type: "POST",
url: "@Url.Action("MyAction", "MyController")",
data: formData,
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
...Do something with the data
},
error: function(result) {
...Handle the error
}
});
Następnie na swojej stronie sterownika (używam MVC WebAPI ale prawdopodobnie działa tak tak samo) możesz zadeklarować dwa oddzielne parametry, które pasują do twoich modeli po stronie klienta i wszystko będzie uporządkowane, zakładając, że nie masz nakładających się nazw właściwości! Uwielbiam to, kiedy magia się dzieje!
public ActionResult MyAction(FormDataModel1 formData1, FormDataModel2 formData2)
Kredyt do https://github.com/macek/jquery-serialize-object dla kodu serializeObject.
Czy znajduje się w pojedynczej etykiecie
dwie formy dwie tagi – zsharp