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.
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
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
Javascript:
Controlador:
OriginalEl autor Soner Sevinc
Debido a MVC ser un poco molesto en el procesamiento de las rutas para el mismo punto de vista, he tenido éxito haciendo esto:
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
La mejor manera para la navegación en mi opinión, es el uso de sammy.js. Aquí hay un post sobre que kazimanzurrashid.com
OriginalEl autor Taras Strizhyk
Aquí está mi controlador de acción.
y mi post de acción está aquí.
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
uso de datos de parámetros como este
{id:id, otherPara:otherParaValue}
OriginalEl autor Ankush Jain