2013-12-17 63 views
1

我是mvc的新手,我有一種情況,我確信我正確地映射了一條路線,儘管它不是。route not mapping mvc 3

這是一個非常基本的登錄表單,可以選擇傳入參數。

這是HTML

<li><a href="@Url.Action("LoginForm", "Home", new {userName="user"})">Login</a></li> 

,這是在 '家' 控制器的操作方法

public ViewResult LoginForm(string userName) 
    { 

     return View(); 
    } 

這是怎麼回事我嘗試在映射路徑

routes.MapRoute(
      null, 
      "Login/{userName}", 
      new { controller = "Home ", action = "LoginForm", UrlParameter.Optional } 
      ); 

但是網址顯示如下

/Home/LoginForm?loginUser=user 

我的目標或許會是以下

Login/user 

建議,爲什麼沒有正確映射。我已經在Global.asax.cs文件中註冊了多個路由。它可能與他們登記的順序有關嗎?

+0

看來,你在你的圖路線指定「username」的,但你傳遞被稱爲「loginUser」的對象....你需要打電話給他們相同的名稱。 – Subby

+0

+1與代碼很好的解釋。 – Subby

+0

嗨。謝謝。是否進行了修正,但仍然有同樣的問題。 – Arianule

回答

0

你打比MapRoute指定一個不同的地址。映射的路線不會觸發。更改參數和操作名稱。

<li><a href="@Url.Action("Login", "Home", new {userName="user"})">Login</a></li> 

您需要訪問/Home/Login/Home/LoginForm。路由自動完成如果正確的地址被訪問。

編輯: 按照您的地址編輯:

  • 據我所知,你不能使用Url.Action生成的鏈接,例如Login/{userName};如果沒有指定控制器,它默認的Home控制器
  • 但是,您可以從瀏覽器直接訪問的Login/{userName}鏈接(由於映射路徑)
  • 您可以創建一個「靜態」(即經典)鏈接,傳遞一個硬編碼地址:
    <li><a href="/Login/user">Login</a></li>

請注意userName添加/每JavaScript的去除。

+0

能向下選民請提供理由嗎? –

3

試試這個:

<li><a href="@Url.Action("LoginForm", "Home", new {userName="user"})">Login</a></li> 

變化的參數loginUseruserName的

+1

嗨null'。謝謝。是否進行了修正,但仍然有同樣的問題。不管怎樣,謝謝 – Arianule

1

使用用戶名代替loginUser

<li><a href='@Url.Action("LoginForm", "Home", new {userName="user"})'>Login</a></li>