更改网址中的查询字符串

时间:2018-12-14 14:48:11

标签: c# asp.net-mvc model-view-controller

我有一个类似这样的操作方法

public ActionResult MethodName(int num)
{
  viewmodel model = GetDetails(num)

  return View(model);
}

路由配置如下

routes.MapRoute(
 name: "MethodName",
 url: "{ControllerName}/{MethodName}",
 defaults: new {controller = "controllerName", action="MethodName"}
);

我的问题是它给出了URL www.mysite.com/controller/Method?message= 78545

我希望拥有它

  

www.mysite.com/controller/Method/78545

有人可以帮我吗?我该如何实现?我尝试在没有帮助的情况下更改路由配置。我需要重写任何URL还是在路由配置中对此进行小的修补?

谢谢。

2 个答案:

答案 0 :(得分:1)

更改路由映射以具有可选的num参数:

import Papa from 'papaparse';

class Dialog extends React.Component {
    ...
    handleFileChange = () => {
       ...
       Papa.parse(file, config);
       ...
    }
    ...
}

答案 1 :(得分:0)

如果您不希望参数产生查询字符串,则需要向MapRoute添加可选参数。然后,使用要传递给操作结果的值加载参数。

在下面的示例中,您可以通过使用“ controller / action / op1”或“ controller / action / op1 / op2”调用该方法来访问该方法。 (如果op1等于值1,则该网址将看起来像“ controller / action / 1”,其他参数相同)

[添加可选参数]

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{op1}/{op2}/{op3}",
            defaults: new { controller = "Home", action = "Index", op1 = UrlParameter.Optional, op2 = UrlParameter.Optional, op3 = UrlParameter.Optional }
        );