Asp.net mvc Asp.Net MVC 3中相同路由的2个操作
我将路线定义为Asp.net mvc Asp.Net MVC 3中相同路由的2个操作,asp.net-mvc,asp.net-mvc-3,routing,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Routing,Asp.net Mvc Routing,我将路线定义为 routes.MapRoute( "Company", // Route name "Company/{companyname}", // URL with parameters new { controller = "Company", action = "CompanyDetail", companyname = UrlParameter.Optional } // Parameter defaults
routes.MapRoute(
"Company", // Route name
"Company/{companyname}", // URL with parameters
new { controller = "Company", action = "CompanyDetail", companyname = UrlParameter.Optional } // Parameter defaults
);
现在的问题是,如果我现在向公司控制器发出任何请求,并将参数传递给
CompanyDetail
方法,我已经执行了此路由,但在一种情况下,我不想发送给此方法,我想将控件发送给另一个操作CallCompany
。如何解决这个问题,请注意,我还需要运行这两种类型的请求 您可能应该看看mvc。这将使您能够将类似url上的请求转发到不同的操作,具体取决于您可以通过编程设置的不同参数。比如说
routes.MapRoute(
"Product",
"Product/{productId}",
new {controller="Product", action="Details"},
new {productId = @"\d+" }
);
这只会转到控制器:产品id中的产品和操作详细信息为int在您的情况下,您必须在regex中定义模式,对于该模式,请求应转到一个路由,并将第二个路由放在该路由旁边
因此,每一个符合此路由约束的请求都将自动由下一个请求处理。正如我理解您的问题,您希望实现以下行为: 有一组公司名称(例如,“test”),它们与URL相对应 你的主人/公司/测试 应将其发送至呼叫公司 其他URL(如您的主机/公司/另一家公司)应路由到CompanyDetail 我认为,最好的方法是在CompanyDetail方法中进行重定向
public ActionResult CallCompany(string companyname)
{
return View();
}
public ActionResult CompanyDetail(string companyname)
{
IEnumerable<string> myCompanies = GetSpecialCompany();
if (myCompanies.Contains(companyname))
{
return RedirectToAction("CallCompany", new { companyname = companyname });
}
return View();
}
private IEnumerable<string> GetSpecialCompany()
{
throw new NotImplementedException();
}
public ActionResult调用公司(字符串companyname)
{
返回视图();
}
公共操作结果公司详细信息(字符串公司名称)
{
IEnumerable myCompanies=getSpecialCompanies();
if(myCompanies.Contains(companyname))
{
返回重定向操作(“CallCompany”,new{companyname=companyname});
}
返回视图();
}
私有IEnumerable GetSpecialCompany()
{
抛出新的NotImplementedException();
}
您可以在控制器方法中进行设置:
public ActionResult CompanyDetail(字符串companyname)
{
如果(条件)
{
返回RedirectToAction(“ActionName”,new{companyname=companyname});
}
返回视图();
}
你能提供一个url,该url应该被调用为Company action/Company/Foo。。。这里Foo是参数,我希望它转到/Company/CallCompany,但由于默认路由,它转到/Company/companydetaily。您可以向我们显示所有路由吗?另外,您不想发送到此方法的“一个条件”是什么?