C# Net MVC:如何进行数据提取和自动映射

C# Net MVC:如何进行数据提取和自动映射,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,假设我有类似www.mysite.com/Certificate/data/C001-P2003的链接 我的控制器名称是证书和操作名称数据 public class CertificateController : Controller { public ActionResult Data(string certid,string studid) { return View(); } } 我想知道我需要开发什么,它将提取id并分成两部分,用连字符分隔,并将

假设我有类似www.mysite.com/Certificate/data/C001-P2003的链接

我的控制器名称是证书和操作名称数据

public class CertificateController : Controller
{
    public ActionResult Data(string certid,string studid)
    {
        return View();
    }
}
我想知道我需要开发什么,它将提取id并分成两部分,用连字符分隔,并将两个数据映射到数据操作

C001将映射到certid,P2003将映射到studid。所以我需要一个如何做的概念

我需要开发任何动作过滤器吗

我是否需要编写任何自定义值提供程序

我是否需要编写任何自定义模型活页夹


我不想在行动中破坏数据,而是想在行动之外破坏数据。给我提个好主意。谢谢

在您的
RouteConfig
中创建一个约定,它将映射您想要的路线

routes.MapRoute(
    name: "CertificateData",
    url: "Certificate/data/{certid}-{studid}",
    defaults: new { controller = "Certificate", action = "Data"}
);
或者启用属性路由并使用操作模板匹配所需的url

// GET Certificate/data/C001-P2003
[Route("Certificate/data/{certid}-{studid}")]
public ActionResult Data(string certid,string studid) {...}

为什么要使用“负面标记”而不是“共享概念”来实现最佳想法?您不能更改url来拆分此值?如果总是用破折号分割,我将在操作中使用一个参数,并在操作中分割。@Sousuke我不想更改url,但我相信在请求到达操作方法之前,应该有某种方法分割路由值。拆分后,我们可以将值绑定到操作参数。你已经尝试过了,人们可以用它来重现问题并给出更好的答案。