2014-06-11 61 views
0

我正在构建一个MVC4 web应用程序,并且想要在我的web应用程序的起始点中设置特定的URL。MVC4如何设置默认网址?

所以我改变了RouteConfig.cs中的一些值,如下所示。

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

你可以通知这一点,但我把后缀名的行动之后,这样我就可以调用一个控制器,显示如“index.mon”

,如果我手动将URL“index.mon “在URL栏中的主机地址后,它就可以正常工作。 但是当应用程序自动启动时,它会引发403.14错误。 (“自动启动”是指在这里,我通过把F5键运行一个临时的IIS服务器运行这个程序。)

登录控制器看起来像这样

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Data.OleDb; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace Monarch815MVC.Controllers 
{ 
public class loginController : Controller 
{ 
    // 
    // GET: /login/ 

    public ActionResult index() 
    { 
     return View(); 
    } 

    public ActionResult loginProcess(string id = "000000", string pass = "example", string scode = "co") 
    { 
     Dictionary<string, object> sessionData = null; 

     String SqlCommand = "USP_LOGIN"; 

     DataSet UserInfo = dataController.ExecuteDataset(dataController.CONN_STRING, CommandType.StoredProcedure, SqlCommand, arParms); 

     if (UserInfo.Tables[0].Rows.Count > 0) 
     { 
      sessionData = new Dictionary<string, object>(); 
      for (int i = 0; UserInfo.Tables[0].Rows[0].Table.Columns.Count > i; i++) 
      { 
       sessionData.Add(UserInfo.Tables[0].Rows[0].Table.Columns[i].Caption, UserInfo.Tables[0].Rows[0].ItemArray[i]); 
      } 
     } 

     return View(); 
    } 
} 
} 

(让我们忘掉loginProcess,我花了关闭几个代码。)

我是否必须对index()或Web.config中的返回阶段执行一些操作?或者RouteConfig.cs?

我必须使用后缀“.mon”来调用控制器。

+0

通过将.mon放在那里,您告诉路由只在URL的控制器部分包含.mon时路由。换句话说,你正在做的与你想要的完全相反。默认操作确实转到特定的url,它们是在没有给出url时执行的操作。 –

+0

感谢您的评论,那么我如何设置您在上面提到的默认操作?我想我的应用程序开始使用“localhost/index.mon”如何做到这一点?这就是我要问的问题:( – hina10531

+1

你没听我说过什么,你正试图让默认动作做一些他们不能做的事情,一个默认动作只会说“如果有这个控制器,就执行这个动作方法没有网址“,ie ..如果你说'http:// yoursite /'(没有别的)。默认动作不会让你重定向到一个特定的url.Router只解释当前的url并根据它执行一个动作 –

回答

0

我想通过只使用黑客解决这个问题。您可能需要创建一个虚拟操作,这将是默认操作,并在被点击后将请求重定向到您的索引.mon

我试过了,请检查这是否对您有帮助。谢谢。

路线配置

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

      routes.MapRoute(
       name: "DefaultY", 
       url: "{action}-mon/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

      routes.MapRoute(
       name: "DefaultX2", 
       url: "{action}/{id}", 
       defaults: new { controller = "Home", action = "Startup", id = UrlParameter.Optional } 
     ); 
     } 

控制器

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

     public ActionResult Startup() 
     { 
      return RedirectToRoute("DefaultY", new {controller = "Home", action = "Index" }); 
     } 
    } 

我,我使用的索引-周一index.mon不起作用(稍后我会探讨,也许它涉及到静态文件),但上面的代码演示了这种方法。

希望有所帮助。