2017-08-10 1 views
0

J'ai défini la route par défaut dans les RouteConfig.cs qui montrent ci-dessous:forme d'affichage à différentes actions du contrôleur ne fonctionne pas dans MVC

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{action}/{id}", 
       defaults: new { controller = "BackEnd", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 

BackEnd Contrôleurs:

public class BackEndController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 
    } 

Contrôleur de compte:

public class AccountController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     [HttpPost] 
     [ValidateAntiForgeryToken()] 
     public ActionResult LoginForm(Login item) 
     { 
      //Some code goes here... 
      return RedirectToAction("Index"); 
     } 
    } 

Connexion partielle:

using (Html.BeginForm("LoginForm", "Account", FormMethod.Post)) 
    { 
     @Html.AntiForgeryToken() 

     @Html.LabelFor(m => m.Username) 
     @Html.TextBoxFor(m => m.Username, new { placeholder = "Username" }) 
     @Html.ValidationMessageFor(m => m.Username) 

     @Html.LabelFor(m => m.Password) 
     @Html.PasswordFor(m => m.Password, new { placeholder = "Password" }) 
     @Html.ValidationMessageFor(m => m.Password) 

     <input type="submit" value="Login" /> 
    } 

Ma forme ne soumet pas à l'action du contrôleur Account/Login.

+1

Votre définition de la route doit être 'url: "{contrôleur}/{action}/{id}",' –

+0

@StephenMuecke Je ne veux pas définir le contrôleur sur l'URL est-il une autre façon d'atteindre ce? –

+2

Alors, comment voulez-vous distinguer un contrôleur d'un autre? –

Répondre

0

Ensuite, vous devrez ajouter une autre route au gestionnaire de cette URL. Cela va toutefois à l'encontre du but du routage basé sur les conventions.

routes.MapRoute(
    name: "Login", 
    url: "Login", 
    defaults: new { controller = "Account", action = "LoginForm" } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{action}/{id}", 
    defaults: new { controller = "BackEnd", action = "Index", id = UrlParameter.Optional } 
);