2009-05-07 6 views
1

J'ai une série d'URL qui ressemblent àMVC Routage - Utiliser une partie de la route pour changer de vue

/Catalog/Ajax/Update/{ViewToUpdate}?var1=a&var2=b&var3=c 

Actuellement, j'ai installé plusieurs routes - un pour chaque {} ViewToUpdate et ce que je voudrais faire est de passer le {ViewToUpdate} à mon gestionnaire d'actions afin que je puisse condenser mon code. Au lieu de:

public ActionResult AjaxUpdateNavigation(string var1, string var2, string var3) {} 

Je voudrais:

public ActionResult AjaxUpdateNavigation(string ViewToUpdate, string var1, string var2, string var3) {} 

Voici mes itinéraires actuels:

routes.MapRoute(
"CatalogAjaxNavigation", 
"Catalog/Ajax/Update/Navigation", 
new { controller = "Catalog", action = "AjaxUpdateNavigation" } 
); 

Comment puis-je configurer correctement la définition de route pour gérer à la fois la {ViewToUpdate } chaîne ainsi que passer encore dans la chaîne de requête?

TIA

Répondre

1

Voici mon itinéraire:

routes.MapRoute("TestThing", "test/{ViewToUpdate}", new {controller = "Home", action = "TestQSParams"}); 

Voilà mon action:

public ActionResult TestQSParams(string ViewToUpdate, string var1, string var2) 
    { 
     TestQSParamsModel m = new TestQSParamsModel {var1 = var1, var2 = var2, ViewToUpdate = ViewToUpdate}; 
     return View("TestQSParams", m); 
    } 

Voici mon modèle:

public class TestQSParamsModel 
    { 
     public string ViewToUpdate { get; set; } 
     public string var1 { get; set; } 
     public string var2 { get; set; } 
    } 

Voilà mon avis:

From QS:<br /> 
    <% foreach(string s in Request.QueryString) 
     Response.Write(string.Format("{0}={1}<br />", s, Request.QueryString[s])); %> 
    <br /> 
    <br /> 
    From Model:<br /> 
    <asp:Literal ID="modelvars" runat="server"></asp:Literal> 

La vue codebehind:

protected void Page_Load(object sender, EventArgs e) 
    { 
     modelvars.Text = string.Format("{0}<br />{1}<br />{2}", Model.var1, Model.var2, Model.ViewToUpdate); 
    } 

Mon URL:

/test/ThisView?var0=douglas&var1=patrick&var2=caldwell 

Enfin, mon résultat:

From QS: 
    var0=douglas 
    var1=patrick 
    var2=caldwell 

    From Model: 
    patrick 
    caldwell 
    ThisView 
+0

Une question. Pourquoi l'événement de page Webform existe-t-il? C'EST À DIRE. Page_Load. – dotnetN00b

+0

De l'ancien temps avant MVC.Net se débarrasser d'eux serait ma conjecture. –

0
routes.MapRoute(
"CatalogAjaxNavigation", 
"Catalog/Ajax/Update/{ViewToUpdate}", 
new { controller = "Catalog", action = "AjaxUpdateNavigation" , ViewToUpdate = (string)null } 
); 


public ActionResult AjaxUpdateNavigation(string ViewToUpdate, string var1, string var2, string var3) {} 
Questions connexes