正如我之前的帖子中所解释的那样,我是MVC的新手,我正在开发一个网站。一切正常,除了我在route.config文件上做的小改动。我需要将用户定向到一个视图,该视图是从另一个视图上的按钮打开的,并且取决于父视图。这意味着不应该允许独立访问它。
将其编辑为更清晰。
这就是问题所在。 客户登录我的网站并查看他们的帐户活动页面,一旦他们有任何到期金额,他们可以选择付款。当他们点击付款按钮时,他们将被定向到付款网站,一旦完成,他们将被重定向回我的网站,他们会看到确认页面/视图。
所以URL现在就是这样。
http://www.examplesite.com/Homecontroller/Loginview/ - for login.
登录后,网址为
http://www.examplesite.com/Homecontroller/CustActview/
从付款网站返回后,该网址应与custAct视图相关,因为它与帐户相关,所以我希望它为
http://www.examplesite.com/Homecontroller/CustActview/successfulpaymentview
所以为了实现这个目的,我在route.config中添加了其他路由,但是添加它给了我另一个问题,现在如果我登录,则URL更改为
http://www.examplesite.com/Homecontroller/CustActview/CustActview
所以我不知道如何处理这个问题。请帮忙。希望这很清楚。
Route.config
routes.MapRoute(
name: "Properties",
url: "{controller}/CustAcct/{action}/{id}",
defaults: new
{
controller = "HomeController",
action = "successfulpaymentview",
id = UrlParameter.Optional
}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "HomeController",
action = "LoginView",
id =
UrlParameter.Optional
}
);
答案 0 :(得分:0)
在我看来,没有必要在路由中增加复杂性,以限制对该视图的直接访问。
也许,您应该尝试使用动作过滤器。
除了那个评论之外,你在路线配置中定义了两个动作......
url:“{controller} / CustAcct / {action} / {id}”,
尝试这样的事情:
routes.MapRoute(
name: "Properties",
url: "Home/CustAcct/{param1}/{param2}/..."
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Login",
id = UrlParameter.Optional
}
);
<强> 更新 强>
好的,我明白了!你RouteConfig.cs应该是:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "AccounInfo-Success",
url: "{controller}/AccounInfo/{action}/"
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}
}
和你的HomeController:
public class HomeController : Controller {
public ActionResult AccountInfo() {
return View();
}
public ActionResult Success() {
return View();
}
}