2016-01-23 189 views
0

我對MVC有點新,並試圖將登錄頁面重寫爲MVC。 我無法將參數傳遞給控制器​​中的ActionResult,傳入的參數爲null。MVC 4 Html.ActionLink不傳遞參數給控制器

這裏查看

<div class="form-group"> 
<div class="row"> 
@Html.TextBoxFor(model => model.UserName) 
</div> 
</div> 

<button class="btn btn-primary"> 
@Html.ActionLink("GO!", "AppList", "LogIn", new { @userName = Model.UserName}, null) 
</button> 

我試圖通過用戶名和密碼進入我的控制器。

public ActionResult AppList(string userName) 
     { 
      return View(); 
     } 

我查了其他帖子,我確定我正在使用適當的過載。

在這裏,我添加的路由配置

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

這是我的ActionResult對於加載登錄頁面

public ActionResult LogIn(string userName, string password) 
     { 
      ViewBag.LogInButton = "Log In"; 

      return View(new Login()); 
     } 

,並查看我給你一個模型

@model LogInPortal.Controllers.LogInController.Login 
+0

'Model.UserName'是否爲NON NULL值? – Shyju

+0

@Shyju如果你的意思是我的模特?是的,它不是無效字段 public class Login { public string UserName {get;組; } public string Password {get;組; } } – TotalONE

+0

你的代碼對我來說看起來很好。你是否改變了默認路由定義? – Shyju

回答

0

點擊鏈接可發出GET請求,但不會提交表單數據。你需要一個提交按鈕表單內提交表單字段值

@model LogInPortal.Controllers.LogInController.Login 
@using(Html.BeginForm("Login","AppList")) 
{ 
    <div class="row"> 
    @Html.TextBoxFor(model => model.UserName) 
    </div> 
    <div class="row"> 
    @Html.TextBoxFor(model => model.Password) 
    </div> 
    <input type="submit" /> 
} 

和馬克與HttpPost動作方法屬性

[HttpPost] 
public ActionResult LogIn(string userName, string password) 
{ 
    // do something with the posted data and return something 
} 

或者你甚至可以使用同一個登錄類對象作爲參數。默認的模型聯編程序會將發佈的表單數據映射到該對象的屬性值。

[HttpPost] 
public ActionResult LogIn(Login model) 
{ 
    // do something with model.UserName and model.Password 
    // to do : return something 
} 
+0

我上面仍然在我的控制器 仍然得到空參數後,我設法傳遞參數,我會更新這張貼,試圖讓骨頭在這裏:) – TotalONE

+0

你確定你的GET操作請求有querystring中的用戶名和密碼? – Shyju

+0

現在剛剛檢查fiddler,沒有查詢字符串進來:/ – TotalONE

相關問題