2013-08-29 67 views
1

在我看來,我有Html.ActionLink轉發到控制器正確的方法,但沒有參數的值

<dt>User Name</dt> 
<dd>@Model.UserName</dd> 

這顯示了正確的用戶名,並且我在同樣的觀點有一個Html.ActionLink

@Html.ActionLink("Change Password", "ChangeNonAdminPassword", "Account", new { area = ""},new{userName=Model.UserName}) 

雖然這個動作鏈接將我發送給右側控制器方法,但我得到的userName值始終爲null

這裏是控制器

[HttpGet] 
public ActionResult ChangeNonAdminPassword(string userName) 
{ 
    var changePassword = new ChangePassword {UserName = userName}; 
    return View(changePassword); 
} 

GET方法的問題是,爲什麼是的userName總是get方法空,我應該怎麼辦發送適當的價值?

回答

2

您正在將userName傳遞給HTML屬性重載。您需要將其添加到路由值過載,與area相同。使用這個來代替:

@Html.ActionLink("Change Password", "ChangeNonAdminPassword", "Account", new { area = "", userName = Model.UserName}, new {}) 
+0

當我做到這一點,它說'不能化解行動「ChangeNonAdminPassword'' – Cybercop

+0

對不起,離開了對HTML所需要的過載屬性!這些需要是空的,讓MVC選擇正確的方法 - 回答更新 – CodingIntrigue

+0

謝謝!那工作 – Cybercop

相關問題