我是MVC
的新手,仍然通过将.NET
应用转换为MVC
来了解详尽信息。
我无法从Action
部分内的页面链接到controller
中的其他"Area"
。
我创建了Areas
并且仍然设置了默认路由。
Area
具有以下结构:
Area
- Admin
- Controller
UserController.cs
-Model
-Views
User
Index.cshtml
Index.cshtml
有一个链接应该在"Index"
中调用AccountController
操作以打开"Default"
视图:
<div class="pagenavigator">@Html.ActionLink("Main Menu", "Index", new { area = "", controller="Account" })</div>
应用程序的默认结构如下:
- Controller
AccountController.cs
- Views
- Account
Default.cshtml
Login.cshtml
我的默认结构还有一个控制器文件夹,其中包含一个控制器,其中RouteConfig.cs
设置了登录(默认)操作:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
);
以下是Account Controller
:
public class AccountController : Controller
{
public ActionResult Login(string returnUrl)
{
StringBuilder sb = new StringBuilder();
sb.Append("Web Security Administration Portal<br/><br/>");
ViewBag.ReturnUrl = returnUrl;
ViewBag.Message = sb.ToString();
return View();
}
public ActionResult Index()
{
return View("Default");
}
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
bool authenticated = Security.AuthenticateLANUser(model.UserName, model.Password);
if (!authenticated)
{
Session["authenticated"] = false;
System.Text.StringBuilder errorMsg = new System.Text.StringBuilder();
errorMsg.Append("Invalid Login/Password entered.");
errorMsg.Append("We were not able to authenticate you in in Active Directory based on the information entered, ");
errorMsg.Append("but we recorded your attempt for audit purposes.");
ModelState.AddModelError("", errorMsg.ToString());
return View(model);
}
else
{
return View("Default");
}
}
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
}
如果我需要链接到默认应用程序路由下定义的"Default"
视图,Index.cshtml
下定义的Area
,我应该怎么做,所以当我点击链接时,我的{{1使用正确的"AccountController"
操作调用?
简而言之,我需要找到从“区域”部分链接到默认应用程序部分中控制器操作的方法,以便调用另一个正确的Action,这在默认路由映射中未指定 现在,链接已断开。
当我查看源代码中的链接时,我看到以下内容:"Index"
,但是当我点击链接时,我收到的错误是:找不到请求的网址:{{ 1}}
这是AdminAreaRegistration:
<a href="/Account/Index">