Je développe une application web avec asp.net mvc 2. Cette application, a un contrôleur avec des opérations asynchrones qui renvoient json ou ajax ... Je l'appelle par jquery et fonctionne bien!Obtenir des données de route de la demande
Mon script est sur la page MasterPage, donc cette opération peut être appelée par n'importe quelle vue qui hérite de cette page MasterPage.
Ma question est, Comment pourrais-je savoir ... quel est le contrôleur et l'action qui demandent l'opération asynchrone?
J'ai essayé ceci:
if (this.RouteData.Values["controller"] == "Product" && this.RouteData.Values["action"] == "Index") {
}
mais obtenir l'action en cours (! Mon action assync ... ou ... "CE" l'action), je veux la demande.
Je l'ai vu parce que, si la demande venait de Home/Index ou Home/Contact ou Customer/Index ou Product/Index mon résultat de json peut être différent, donc, je voudrais tester quel est le contrôleur et l'action .
merci!
---- Edité
Il est un système de suivi du travail de mon client. Je fais quelque chose comme ceci:
//every second I get info in my assync action:
$(document).ready(function() {
var interval = window.setInterval(GetJobs, 1000);
});
function GetJobs() {
$.getJSON('<%=Url.Action("Index", "AssyncJob", new { area = "Admin"}) %>', function (r) {
/// ----------- Info in MasterPage (All views need it) ------------ //
// setup the time of server...
$("#time").html(r.time);
// setup the jobs are running... (
$("#running").html("");
if (r.jobcount == 1)
$("#running").html("There is one job running!");
else if(r.jobcount > 1)
$("#running").html(r.jobcount + " jobs running!");
/// ----------- Info in Home/Index ------------ //
if ($("#jobstoped")) { $("#jobstoped").html(r.jobstoped); }
// get a list of jobs... (in my action this info is in Cache)
if (r.jobs != null) {
$(r.jobs).each(function() {
if ($("#job" + this.id)) {
if (this.IsRunning) {
if (!$("#job" + this.id).hasClass("running")) {
$("#job" + this.id).addClass("running");
}
}
else if (this.IsStoped) {
if (!$("#job" + this.id).hasClass("stoped")) {
$("#job" + this.id).addClass("stoped");
}
}
else if (this.IsEnding) {
if (!$("#job" + this.id).hasClass("finished")) {
$("#job" + this.id).addClass("finished");
}
}
// --- there is a lot of info and rules that I fill for each job in list
}
});
}
});
}
Je reviens quelques infos et fonctionne très bien mais je dois retourner la liste des emplois que sur l'action Index au contrôleur Home, parce que cela ... Je dois savoir quelle est la route demandent l'action assync ... pour améliorer la performance et éviter les informations inutiles!
Eh bien, si vous pouvez aider mon ... Je l'apprécierais grandement! = D
Merci encore!
Salut amurra, je le sais mais cette opération assync renvoie beaucoup d'informations et sera appelée chaque seconde. Certaines actions que j'ai besoin de cette information et d'autres ne le font pas. Je ne peux pas séparer cela parce que cette architecture vient de mon client. Je veux juste tester le contrôleur et l'action qui proviennent de la demande et changer le résultat. Merci! –
@Felipe - Si toutes ces routes vont à la même action, vous aurez toujours le même contrôleur et la même action. C'est pourquoi vos vérifications ne fonctionnent pas. Vous devrez les diviser en différents contrôleurs et actions pour réaliser ce que vous voulez. Si je ne comprends pas encore votre question, pourriez-vous poster votre code js? – amurra
Amurra, désolé pour mon anglais =/mais ... mon javascript est sur masterpager et j'ai plusieurs vues appelant cette action assync (parce que mes vues hérite de masterpage). Je sais que ce code posté est erroné car il retourne toujours le RouteData de l'action en cours, mais je veux obtenir des informations sur la route qui demande l'action assync pour changer le résultat. Je veux le contrôleur et l'action de la demande, si cela vient de Produit/Index ou Client/Détail ou Client/Index tout autre! Je ne sais pas si tu comprends bien. Merci encore! –