Necesito un poco de ayuda. Escribo poco el uso de la aplicación ASP.NET MVC4 con JavaScript y octavos de final y yo no puedo enviar datos desde javascript para Controlador MVC y a la inversa. Por ejemplo, la parte de JS se parece a:

JavaScript

self.Employer = ko.observable();
self.AboutEmployer = function (id) {
            $.ajax({                    
                    Url.Action("GetEmployer", "Home")
                    cache: false,
                    type: 'GET',
                    data: "{id:" + id + "}",
                    contentType: 'application/json; charset=utf-8',
                    dataType: "json",
                    success: function (data) {
                        self.Employer(data);
                    }
                }).fail(
                function () {
                    alert("Fail");
                });
         };

En ASP.NET MVC Controlador Home me estoy poniendo empleador por ID y la devuelve como Json:

C#

public JsonResult GetEmployer(int id)
    {
        var employer = unit.Repository<Employer>().GetByID(id);
        return Json(employer, JsonRequestBehavior.AllowGet);
    }

Mi punto de Vista devolver otro Controlador (Casa/KnockOutView). Mi punto de Vista también se presenta otro de los objetos y en función de lo que recibe, tiene aspecto diferente:

HTML

...
<b>About Company: </b><a href="#" data-bind="click: $root.AboutEmployer.bind($data, Vacancy().EmployerID)">
<span data-bind="    text: Vacancy().Employer"></span></a>
<div data-bind="if: Vacancy">
    <div id="VacancyDescription"><span data-bind="text:DescriptionShort"></span>
    </div>
</div>
<div data-bind="if: Employer">
    <div data-bind="text: Employer().EmployerDescription"></div>
</div>

Todo funciona muy bien, he recibido la Vacante y el Empleador objetos en JS y mostrar en HTML usando octavos de final, pero mi URL de todos los tiempos sigue siendo el mismo!!! Pero quiero cambiar la URL de todos los tiempos, cuando estoy llegando a la Vacante o Empleador.
Por ejemplo, si quiero conseguir Empleador, utilizando el método GetEmployer, la URL debe se parece a: ~/Home/GetEmployer?id=3
Si me cambio de esta cadena de Código
Url.Action("GetEmployer", "Home") en url: window.location.href = "/home/GetEmployer?id=" + id URL será cambiado, pero el Controlador me devuelve un objeto Json y lo muestra en la ventana en formato Json.
Ayúdame, por favor, para cambiar la dirección URL y obtener información de Controlador de URL.
Gracias.

Tienes que ser cuidadoso cuando la publicación de JSON. Su data no es válido JSON, porque le faltan las comillas alrededor del nombre de la propiedad. La manera más fácil para obtener una cadena JSON es el uso de JSON.stringify regular de objetos de javascript, en lugar de tratar de construir la cadena. (Asegúrese de que está utilizando un razonablemente reciente del navegador IE8+ o un navegador real), o el uso de una biblioteca como json2.js si usted tiene que apoyar IE7))

OriginalEl autor Taras Strizhyk | 2013-09-23

5 Comentarios

  1. 3

    Tratar a continuación el código, la esperanza ayuda a

    Este código funciona %100 , por favor, cambie debajo del cuadro de texto de acuerdo a su situación

    HTML

    <input type="text" id="UserName" name="UserName" />
    <input type="button" onclick="MyFunction()"value="Send" />
    
    <div id="UpdateDiv"></div> 

    Javascript:

    function MyFunction() {
        var data= {
            UserName: $('#UserName').val(),
        };
        $.ajax({
            url: "/Home/GetEmployer",
            type: "POST",
            dataType: "json",  
            data: JSON.stringify(data),
            success: function (mydata) {
                $("#UpdateDiv").html(mydata);
                history.pushState('', 'New URL: '+href, href); //This Code lets you to change url howyouwant
            });
            return false;
        }
    }

    Controlador:

    public JsonResult GetEmployer(string UserName)
    {
        var employer = unit.Repository<Employer>().GetByID(id);
        return Json(employer, JsonRequestBehavior.AllowGet);
    }
    Tengo pregunta similar. Estoy buscando en este código, pero no entiendo muy bien todo lo que está ocurriendo en el ASP lado. Podrías explicar, por favor?

    OriginalEl autor Soner Sevinc

  2. 0

    Debido a MVC ser un poco molesto en el procesamiento de las rutas para el mismo punto de vista, he tenido éxito haciendo esto:

    self.Employer = ko.observable();
    self.AboutEmployer = function (id) {
                $.ajax({                    
                        url: "@Url.Action("GetEmployer", "Home", new { id = "PLACEHOLDER"})".replace("PLACEHOLDER", id),
                        cache: false,
                        type: 'GET',
                        contentType: 'application/json; charset=utf-8',
                        dataType: "json",
                        success: function (data) {
                            self.Employer(data);
                        }
                    }).fail(
                    function () {
                        alert("Fail");
                    });
             };

    Puede utilizar el estándar de url: "@Url.Action("GetEmployer", "Home")/" + id, pero en actualizar, con la ruta de la IDENTIFICACIÓN existente permanece en las llamadas posteriores, por lo que comienza añadiendo el id, que, obviamente, no funciona. Especificando el IDENTIFICADOR de llamada, ese comportamiento no está presente.

    OriginalEl autor Jaime Torres

  3. 0

    Aquí está mi controlador de acción.

    [HttpPost]
        public ActionResult ActionName(string x, string y)
        {
            //do whatever
            //return sth :)
    
        }

    y mi post de acción está aquí.

    <script type="text/javascript">
            function BayiyeCariEkle(){
    
               var sth= $(#itemID).text();
    
               var sth2= $(#itemID2).text();
    
               $.post("/ControllerName/ActionName", { x: sth, y: sth2});
    
             }
    </script>
    cómo especificar que se trata de un json tipo?
    acabo de enviar la cadena de aquí. -«string» o «serie» de un objeto JSON que me serializado por el uso de JSON plugin ofrece en json.org JSONstring = JSON.stringify(entrada);

    OriginalEl autor Burk

  4. 0

    uso de datos de parámetros como este {id:id, otherPara:otherParaValue}

     $.ajax({                    
         url:Url.Action("GetEmployer", "Home")
         type: 'GET',
         data: {id:id},
         contentType: 'application/json; charset=utf-8',
         dataType: "json",
         success: function (data) {
             alert(data)
         }
     });

    OriginalEl autor Ankush Jain

Dejar respuesta

Please enter your comment!
Please enter your name here