Pregunta

En ASP.Net MVC, que tiene una forma más o menos como esto:

<% using (Ajax.BeginForm(new AjaxOptions() { OnSuccess="onSuccess"})) {%>
  <p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
  </p>
  <p><input type="submit" value="Submit comment" /></p>
<% } %>

¿Cómo puede la función Javascript onSuccess sabe si el resultado es otra versión de la forma, ya que no validar, un comentario como un div para añadir a la lista de comentarios o de una conexión a la página que debe ser pop-up para el registro en?

No hay solución correcta

Otros consejos

Se puede definir que en su regreso JSON o cualquier otro método de transporte a utilizar?

No estoy seguro si eso es lo que estás buscando, sino también: esta es la forma de la función onSuccess se llama:

YourFunction(ajaxContext);

AjaxContext se define como sigue:

AjaxContext ajaxContext = new AjaxContext(request, updateElement, loadingElement, ajaxOptions.InsertionMode);

Debe reemplazar el código dentro de su formulario de Ajax con una nueva visión parcial y, a continuación, volverá a ese punto de vista parcial desde su controlador. La vista parcial consistiría en:

<p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>

De esta manera, su vista parcial funciona igual que una vista normal. Desafortunadamente no hay una forma sencilla de ejecutar javascript como una respuesta (ya que usted está respondiendo con una vista). Sería más fácil si su respuesta fue una cadena JSON, pero en ese caso, no se puede utilizar el AjaxForm debido a que la cadena JSON quedaría en la pantalla como resultado de la presentación de la forma (y procesar su respuesta). Esto puede funcionar, aunque (no he probado):

<p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>
<script type="text/javascript">
    function processResponse(data){
        // blah blah blah
    }
    processResponse(<%= ViewData["dataFromTheController"] %>);
</script>

Su podría simplemente añadir diferentes clases CSS a los elementos fundamentales de sus respuestas (por ejemplo .Form, .comments, .login). Y luego (por ejemplo, en jQuery):

var response = $(responseContent);
$('.form', response).each(function() {
    // $(this) is form
});
$('.comments', response).each(function() {
    // $(this) is comments
});
$('.login', response).each(function() {
    // $(this) is login page
});
  

¿Cómo puede la onSuccess Javascript   función de saber si el resultado es   otra versión de la forma porque   no validó, un comentario como un div a   añadir a la lista de comentarios o un registro   en la página que debe pop-up para   para iniciar sesión?

La respuesta corta es que no se puede validar a menos que explícitamente. Esto se debe a JSON se transporta como una cadena y cuando el JavaScript del lado cliente obtiene la cadena.

Para empezar se debe conocer de forma implícita qué tipo de objeto a esperar. Si se llama a un servicio web @ Cars/List entonces usted sabe que el objeto devuelto será una lista de coches y procesarla adecuadamente en su cliente. Se puede ejecutar en errores que debe manejar apropiadamente por volver a intentar la solicitud o registro de ellos o mostrando un mensaje de error.

Yo le recomendaría utilizar el jquery.form complemento , con este usted puede tener una forma normal de actuar como un uno ajax, como esto:

 <script type="text/javascript"> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#myForm').ajaxForm(function() { 
                alert("Thank you for your comment!"); 
            }); 
        }); 
    </script> 

<form id="myForm" action="comment.php" method="post"> 
    Name: <input type="text" name="name" /> 
    Comment: <textarea name="comment"></textarea> 
    <input type="submit" value="Submit Comment" /> 
</form>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top