Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理未使用的MVC路由参数_C#_Asp.net Mvc_Url_Asp.net Mvc Routing - Fatal编程技术网

C# 如何处理未使用的MVC路由参数

C# 如何处理未使用的MVC路由参数,c#,asp.net-mvc,url,asp.net-mvc-routing,C#,Asp.net Mvc,Url,Asp.net Mvc Routing,我有一个MVC应用程序,UI团队要求职业页面的URL遵循以下格式:mydomain.com/careers/{jobTitle}/{JobCode}。我可以在职业控制器中这样做: public ActionResult Detail(string jobTitle, string jobCode) { var model = getModelFromDb(JobCode); return View(model); } 问题是,我们通过职务

我有一个MVC应用程序,UI团队要求职业页面的URL遵循以下格式:
mydomain.com/careers/{jobTitle}/{JobCode}
。我可以在职业控制器中这样做:

    public ActionResult Detail(string jobTitle, string jobCode)
    {
        var model = getModelFromDb(JobCode);
        return View(model);
    }
问题是,我们通过职务代码而不是职务来查找职业信息,因此最终会得到一个未使用的参数。我认为这不是最好的做法。特别是因为你可以输入任何你想要的职业头衔,并且仍然可以得到工作细节。这样的url仍然有效:mydomain.com/careers/yourmom/1234

我想我们总是可以通过头衔和代码来查找职业,但这似乎毫无意义,因为代码是独一无二的

有没有更好的方法来实现url中的额外参数并防止将无效的职务放在url中?

您可以创建,这将只允许匹配包含与职务代码匹配的职务的路由

您必须从接口继承并实现该方法。方法接收的参数之一是

它是包含路由参数的键/值对的集合。您可以使用它们查找职务名称,并确保其与职务代码一致


通过这种方式,您将能够只接收正确的路由并拒绝不正确的路由,如
mydomain.com/careers/yourmom/1234

我们最终要做的是将这两个参数(jobTitle和jobCode)传递给控制器,按jobCode查找记录,并验证记录的slug是否与传入的jobTitle匹配(不区分大小写)。这样我们可以防止虚假url返回作业详细信息页面,并让UI团队感到高兴。

您可以尝试将jobTitle设置为可选,但这意味着将url格式更改为{JobCode}/{jobTitle}我猜这不是一个选项?看看这个问题和答案。可以在路由中使用可选参数我猜您可能想要一个“slug”路由(其中仅包含
jobCode
将生成一个包含
jobCode
jobtile
的url)。如果是,请参阅