当我运行我的应用程序时,我在地址栏中获得了以下URL。
http://Localhost/
应用程序默认路由,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login",
action = "Login", id = UrlParameter.Optional }
);
但我想设定的是,
当我运行我的应用程序时,我希望看到这样的URL,
http://localhost/clientName/login (I want to display this fixed URL on start up of application)
让我们说,此时用户会显示登录屏幕。在登录屏幕上方" ClientName"显示。
现在我的要求是,用户应该能够调整这个" ClientName"。
例如。如果用户输入John作为clientName,则在登录屏幕上方应显示John。
我希望我能清楚自己的要求。
现在我能够动态获取clientName。因为我已经设定了以下路线。
routes.MapRoute("Customers", "{customer}", new { controller = "Login", action = "Login" }, null);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login",
action = "Login", id = UrlParameter.Optional }
);
我的LoginController,
public ActionResult Login(string returnUrl, string customer)
{
if(ClientExists(customer)) //Check against DB or list or any other variable
{
//Do some custom logic
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
请点击此链接http://www.codeproject.com/Tips/825266/ASP-NET-MVC-Dynamic-Routing以获取更多参考资料。
有了这个,我从来没有看到" returnUrl"登录actionMethod。
的参数那么首先如何设置固定的URL? 第二,如何从URL动态更改和获取clientName(如果已更改)?
答案 0 :(得分:0)
我只能用这个帮助你:I never see any value in "returnUrl" parameter of Login actionMethod.
您无法获得returnUrl
的任何值,因为您使用的绑定错误,或者不使用它。
MVC绑定如何工作?很简单。
让我们拿走您的代码:
public ActionResult Login(string returnUrl, string customer)

此方法会在从任何地方调用此方法时,在调用网址中查找类似returnUrl
或customer
的内容。
让我们想象一下我们称之为:http://localhost:port/Login/Login。
这将来到您的Login
方法,它将尝试分析它并检查是否有任何参数与它一起发送。在这种情况下,没有发送参数,也不会将任何内容绑定到string
。
但是,如果我们调用此路径:http://localhost:port/Login/Login?returnUrl=something&customer=customerName,这将触发您拥有的精确Login
方法,并将绑定正确的值。因此,在string returnUrl
中,您将拥有"某些内容",并且在string customer
中您将获得值" customerName"。
答案 1 :(得分:0)
尝试按如下方式设置您的路线(我在VB中编写我的路线,但您应该能够轻松翻译):
routes.MapRoute(
name:="Customers",
url:="Customers/{*pathInfo}",
defaults:=New With {.controller = "Customers", .action = "Login"}
)
要访问它,只需访问:
http://yoursite.com/Customers/John/JohnsHomePage
然后,您的客户控制器将具有如下的Login方法:
Function Login(ByVal pathInfo As String) As ActionResult
' Use your path info to extract your information
' It will only contain the part of the URL past the /Customers path
' Parse pathInfo to get returnUrl
' Do your page work
Response.Redirect(returnUrl)
End Function
将客户网址路径更改为登录或其他内容。