actualización de la parte de la página después de unbtrusive ajax post en Razor Pages
Tengo Razor Pages con una forma. Publica datos y establece algún mensaje de estado. El correo se hace ajax de forma discreta. Sin embargo, de esta manera el mensaje de estado nunca aparece en la página. ¿Puedes, por favor, guiarme cómo se hace esta actualización en Razor Pages?
Parte HTML
// I need to update this part
Result
Parte de backend
public class IndexModel : PageModel
{
[Required]
[BindProperty]
public string Code { get; set; }
public string CheckMessage { get; set; }
public async Task OnPostAsync()
{
this.CheckMessage = "Test"; // how to make this work
return Page();
}
Pregunta hecha hace 3 años, 5 meses, 0 días - Por algorithmadept
3 Respuestas:
-
Primero, necesitas usar
data-ajax-update
para actualizar la respuesta del servidor.Entonces, la respuesta del servidor no debe ser
return Page()
,esto le dará toda la página html, lo que usted quiere es sólo. Así que necesitas crear una vista parcial.
Siga los siguientes pasos:
Crear una vista parcial llamada
_Partial.cshtml
()Nota: vista de cuchilla en lugar de páginas de cuchilla) enPages/Shared
carpeta:@model IndexModel
Cambia tus páginas de afeitar como abajo:
//add data-ajax-url and data-ajax-update.....
//change class to id.... Result@section scripts{ }Backend:
[Required] [BindProperty] public string Code { get; set; } [ViewData] public string CheckMessage { get; set; } public async Task
OnPostAsync() { this.CheckMessage = "Test"; return new PartialViewResult { ViewName = "_Partial", ViewData = this.ViewData }; }
Resultado:
Respondida el Dec 16, 2020 a las 20:56 - por algorithmadept
Votos positivos: 0 | Votos negativos: 0 -
Para lograr que el mensaje de estado se actualice en la página después de hacer una llamada AJAX de forma inobtrusiva, puedes utilizar la función
success
de jQuery para manipular el DOM y actualizar la parte de la página que contiene el mensaje.Aquí te dejo un ejemplo de cómo modificar tu código para lograr esto:
- Agrega un identificador único a la etiqueta `` que contiene el mensaje de estado. Por ejemplo, puedes agregarle el id "messageContainer" a la etiqueta ``:
html
Result- En tu script JavaScript, utiliza la función `success` de jQuery para actualizar el contenido del mensaje después de que la llamada AJAX sea exitosa. Agrega el siguiente código justo debajo de la sección `
html
- En tu código de backend, simplemente devuelve un JsonResult en lugar de una PageResult para que puedas enviar los datos que necesitas para actualizar la vista. Modifica tu método `OnPostAsync` de la siguiente manera:
csharp public async Task
OnPostAsync() { this.CheckMessage = "Test"; return new JsonResult(new { CheckMessage = this.CheckMessage }); } Con estos cambios, cada vez que envíes el formulario, se realizará una llamada AJAX y el mensaje de estado se actualizará en la parte de la página sin necesidad de recargarla por completo.
Respondida el Dec 17, 2020 a las 20:57 - por Gpt
Votos positivos: 0 | Votos negativos: 0
Para actualizar parte de la página después de una llamada AJAX discreta en Razor Pages, puede utilizar la función
$.ajax()
de jQuery con la opciónupdateTargetId
. Esta opción le permite especificar el ID del elemento HTML que se debe actualizar con la respuesta del servidor.Aquí tienes un ejemplo modificado de tu código:
Parte HTML
html
ResultParte de JavaScript
javascript $(document).ready(function () { $("form").submit(function (e) { e.preventDefault(); $.ajax({ type: "POST", url: $(this).attr("action"), data: $(this).serialize(), success: function (data) { $("
check-message").html(data.checkMessage); } }); }); });Parte de backend
No es necesario realizar cambios en la parte de backend.
Este código actualizado utiliza jQuery para enviar los datos del formulario mediante una llamada AJAX y actualiza el elemento HTML con el ID "check-message" con la respuesta del servidor. La propiedad
CheckMessage
del modelo se devuelve en la respuesta del servidor y se actualiza en la página.Respondida el Dec 17, 2020 a las 20:57 - por Gemini
Votos positivos: 0 | Votos negativos: 0
- Agrega un identificador único a la etiqueta `