MVC التوجيه - استخدام الطريق جزئيا إلى التبديل بين طرق العرض

StackOverflow https://stackoverflow.com/questions/836362

سؤال

ولدي سلسلة من عناوين 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} سلسلة وكذلك ما زالت تمر في سلسلة استعلام مواقع المعلومات؟

و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>

والرأي codebehind:

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

وبلدي رابط:

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

وأخيرا يا النتيجة:

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

  From Model:
  patrick
  caldwell
  ThisView

نصائح أخرى

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) {}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top