如何为路由实现另一个var参数名称 - c#

我有这个

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,因此我想保持相同的名称
方法后面的代码。

有可能吗?

参考方案

您有三种选择:

首先是(如评论所述),将现有路径中的{id}更改为{pageNumber}
第二个是创建一条新路由,该路由有些不同,并采用{pageNumber}。将此路线放在您现有的路线之前:

routes.MapRoute(
    name: "PageNumber",
    url: "Products/ShowProductsPerPage/{pageNumber}",
    defaults: new { controller = "Products", action = "ShowProductsPerPage" }
 );

第三种方法是显式传递pageNumber作为参数:/Products/ShowProductsPerPage?pageNumber=5

ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

弹出表单中的ajax数据发布未命中控制器方法ASP.NET MVC - c#

我有一个弹出表单AddorEdit.cshtml,从index.cshtml页面调用。表单正在打开,但无法将数据发布到控制器方法。索引页// index.cshtml // <a class="btn btn-success" style="margin-bottom:10px;" onclick="P…

ASP.NET MVC ExecuteResult与ActionResult - c#

我见过它用来向响应添加标头,然后返回文件进行流传输。public override void ExecuteResult(ControllerContext context) { ... response.AddHeader("Accept-Ranges", "bytes"); response.AddHeader(&…

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …