English 中文(简体)
asp.net mvc 同一控制器上的不同操作路线
原标题:asp.net mvc routing different actions on the same controller

I have a controller named Raportare that has two actions: ReportA and ReportB. Both return an excel file based on the parameters supplied.

public ActionResult ReportA(int? month, int? year)
{
...
}
public ActionResult ReportB(int? month, int? year)
{
...
}

My global.asax对此有如下路线规则:

routes.MapRoute(
                "ReportA",
                "{Raportare}/{ReportA}/{month}/{year}",
                new { controller = "Raportare", action = "ReportA", month = UrlParameter.Optional, year = UrlParameter.Optional});

 routes.MapRoute(
                "ReportB",
                "{Raportare}/{ReportB}/{month}/{year}",
                new { controller = "Raportare", action = "ReportB", month = UrlParameter.Optional, year = UrlParameter.Optional }); 

However when I go mysite.com/Raportare/ReportB/5/2012 it s returning the ReportA file. It works fine if I go to mysite.com/Raportare/ReportB?month=5&year=2012. Probably I m doing something wrong in the routing rules but I can t figure it out.

最佳回答

您不需要为每个动作添加路径 - 它们像模板一样工作, 而第三个参数只是默认值 。

routes.MapRoute(
  "reports",
  "Raportare/{action}/{month}/{year}",
  new {
    controller = "Raportare",
    action = "ReportA",
    month = UrlParameter.Optional,
    year = UrlParameter.Optional
  }
);

将此置于您在 Global.asax.cs 中的默认规则之前, 否则默认可能先匹配 。

然后mysite.com/Raportare/ReportB/5/2012 将援引 ReportB 动作,因为它已在url中指明。

mysite.com/Raportare 将引用 ReportA ,因为这是默认动作。

问题回答

您创建的路线基本相同。 这就是为什么第一个匹配请求字符串的路径成功, 并被引用 。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签