2010-01-19 2 views
0

J'utilise un HtmlHelper personnalisé dans une page partielle.Obtention du nom de l'action en cours à partir de la page partielle

Exemple:

/Home/Index - Is the Main Page with Index View 

/Home/Partial - Is the Partial Action with Partial - A Partial View 

Dans la vue Index:

Html.RenderAction("Partial"); 

Dans la vue partielle:

J'utilise un HtmlHelper personnalisé dans le HtmlHelper que je dois obtenir le url d'où provient la demande?

Disons Il devrait être comme «/Home/partiel »

Comment puis-je obtenir cela dans ma méthode HtmlHelper

Répondre

6

Il y a deux façons dont vous pouvez le faire en fonction de ce que vous voulez. Votre propriété HtmlHelper ViewContext aura à peu près tout ce que vous avez besoin de la demande particulière: HttpContext, RequestContext, RouteData, TempData, ViewData, etc.

Pour obtenir le chemin actuel de la demande, essayez helper.ViewContext.HttpContext.Request.Path. Cela renverrait le chemin de requête réel, probablement "/" ou "/ home/index" si le chemin était explicite dans l'URL.

Je ne suis pas sûr de savoir pourquoi vous cherchez à obtenir "/ home/partial". Comme il s'agit d'une vue partielle, la demande proviendrait toujours d'un autre endroit, par exemple. "/ home/index".

Peu importe, vous pouvez vérifier la RouteData et obtenir l'action (partielle) et le contrôleur, entre autres valeurs de l'itinéraire:

public static string TestHelper(this HtmlHelper helper) 
{ 
    var controller = helper.ViewContext.RouteData.Values["controller"].ToString(); 
    var action = helper.ViewContext.RouteData.Values["action"].ToString(); 
    return controller + "/" + action; 
} 

Si appelé dans votre vue Index (Index.aspx), il retournerait " Accueil/Index ".
Si elle est appelée dans votre vue partielle (Partial.aspx), elle renvoie "Home/Partiel".

Espérons que ça aide.

Questions connexes