Asp.net mvc MVC布线-使用布线零件切换视图

Asp.net mvc MVC布线-使用布线零件切换视图,asp.net-mvc,routing,routes,asp.net-mvc-routing,Asp.net Mvc,Routing,Routes,Asp.net Mvc Routing,我有一系列的URL,看起来像 /Catalog/Ajax/Update/{ViewToUpdate}?var1=a&var2=b&var3=c 目前我已经设置了几个路由-每个{ViewToUpdate}一个路由,我想做的是将{ViewToUpdate}传递给我的操作处理程序,这样我就可以压缩代码。而不是: public ActionResult AjaxUpdateNavigation(string var1, string var2, string var3) {} 我想:

我有一系列的URL,看起来像

/Catalog/Ajax/Update/{ViewToUpdate}?var1=a&var2=b&var3=c
目前我已经设置了几个路由-每个{ViewToUpdate}一个路由,我想做的是将{ViewToUpdate}传递给我的操作处理程序,这样我就可以压缩代码。而不是:

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

public ActionResult AjaxUpdateNavigation(string ViewToUpdate, string var1, string var2, string var3) {}
以下是我目前的路线:

routes.MapRoute(
"CatalogAjaxNavigation",
"Catalog/Ajax/Update/Navigation",
new { controller = "Catalog", action = "AjaxUpdateNavigation" }
);
如何正确设置路由定义以处理{ViewToUpdate}字符串以及仍然传入querystring

TIA

以下是我的路线:

  routes.MapRoute("TestThing", "test/{ViewToUpdate}", new {controller = "Home", action = "TestQSParams"});
以下是我的行动:

  public ActionResult TestQSParams(string ViewToUpdate, string var1, string var2)
  {
      TestQSParamsModel m = new TestQSParamsModel {var1 = var1, var2 = var2, ViewToUpdate = ViewToUpdate};
      return View("TestQSParams", m);
  }
这是我的模型:

public class TestQSParamsModel
  {
      public string ViewToUpdate { get; set; }
      public string var1 { get; set; }
      public string var2 { get; set; }
  }
以下是我的看法:

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>
最后,我的结果是:

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

  From Model:
  patrick
  caldwell
  ThisView
这是我的路线:

  routes.MapRoute("TestThing", "test/{ViewToUpdate}", new {controller = "Home", action = "TestQSParams"});
以下是我的行动:

  public ActionResult TestQSParams(string ViewToUpdate, string var1, string var2)
  {
      TestQSParamsModel m = new TestQSParamsModel {var1 = var1, var2 = var2, ViewToUpdate = ViewToUpdate};
      return View("TestQSParams", m);
  }
这是我的模型:

public class TestQSParamsModel
  {
      public string ViewToUpdate { get; set; }
      public string var1 { get; set; }
      public string var2 { get; set; }
  }
以下是我的看法:

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>
最后,我的结果是:

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

  From Model:
  patrick
  caldwell
  ThisView

一个问题。为什么会有Webform页面事件?我猜是MVC.Net摆脱它们以前的页面加载。一个问题。为什么会有Webform页面事件?我猜是MVC.Net摆脱它们以前的页面加载。