Я новичок в 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
, поэтому, когда я нажимаю ссылку, мой "AccountController"
вызывается с правильным "Index"
действием?
Короче говоря, мне нужно найти способ связи из раздела «Область» с действием контроллера в разделе приложения по умолчанию, чтобы вызвать другое правильное действие, которое не указано в сопоставлении маршрутов по умолчанию. Прямо сейчас ссылка не работает.
Когда я просматриваю ссылку в источнике, я вижу следующее: <a href="/Account/Index">
, но когда я нажимаю на ссылку, я получаю сообщение об ошибке: Ресурс не может быть найден с запрошенным URL: /login.aspx
Вот AdminAreaRegistration:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
area = ""
- person Pablo Romeo   schedule 11.05.2015RouteConfig.cs
- person gene   schedule 11.05.2015new {}
, как указано в комментариях к этому ответу. - person Pablo Romeo   schedule 11.05.2015RouteConfig.cs
- person gene   schedule 11.05.2015login.aspx
, немного странен. Вы уверены, что это не определено в разделе проверки подлинности форм вашего web.config как loginUrl? - person Pablo Romeo   schedule 11.05.2015HTTP 404
сообщение о том, что ресурс не может быть найден и чтоRequested URL: /login.aspx
. Рут для админа настроен по умолчанию и я там ничего не менял. Он указывает на правильное действие и находит правильный контроллер. Единственная проблема заключается в том, что когда я нажимаю на ссылку, он не может найти действие, указанное для контроллера по умолчанию. - person gene   schedule 11.05.2015AdminAreaRegistration
к своему вопросу - person gene   schedule 11.05.2015AccountController
имеет[Authorize] and [InitializeSimpleMembership]
attributes
, а методы входа в систему имеют атрибуты[AllowAnonymous]
и[HttpPost]
, но методIndex
ничего не имеет. Мойweb.config
тоже не имеет отношения кloginUrl
. Строка<forms loginUrl..
закомментирована - person gene   schedule 12.05.2015