2013-08-20 22 views
0

我有這個如何實現另一個變量參數名稱爲路線

public class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 

,當我嘗試使用參數一樣

[AcceptVerbs("POST")] 
public JsonResult ShowProductsPerPage(string pageNumber) 
{ ... 

它不工作

但是當我使用

[AcceptVerbs("POST")] 
public JsonResult ShowProductsPerPage(string id) 
{ ... 

這是工作很好。

這裏JS

var currentUrl = window.location.protocol + '//' + window.location.host; 
    var url = currentUrl + "/Products/ShowProductsPerPage/" + pageNumber; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: "", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      alert(data.pageNumber); 
     } 
    }); 

我在JavaScript變量pageNumber使用,所以我想保持相同的名稱後面的方法 代碼。

有沒有可能?

+0

只是改變(編號)到路線{PAGENUMBER }。 – Dennisch

+1

向我們展示如何將數據發佈到控制器 – karaxuna

+0

@Dennisch但是當我使用'id'時,其他方法呢?他們不會工作。 –

回答

2

你有三個選擇:

  • 首先是(因爲評論說),要改變{id}{pageNumber}在現有路線。

  • 第二個是創建一個新的路線,它在某些方面有所不同,需要{pageNumber}。將此路線放在您現有的路線之前:

routes.MapRoute(
    name: "PageNumber", 
    url: "Products/ShowProductsPerPage/{pageNumber}", 
    defaults: new { controller = "Products", action = "ShowProductsPerPage" } 
); 
  • 第三種方式是明確地傳送pageNumber作爲參數:/Products/ShowProductsPerPage?pageNumber=5
+0

謝謝!我剛剛檢查了#2,這是我需要的。 –

+0

他們都會工作,最好的取決於情況。我很高興你找到一款適合你的產品。 – Bobson

1

只需將路由中的{id}更改爲{pageNumber}(以及相應的url參數)即可。沒有關於參數名稱的規則,id只是一個常用的名稱。

0

更改您的來電:

var url = currentUrl + "/Products/ShowProductsPerPage?pageNumber=" + pageNumber; 
相關問題