2014-06-11 94 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不起作用(稍後我會探討,也許它涉及到靜態文件),但上面的代碼演示了這種方法。

希望有所幫助。