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}) 

Хотя этот actionlink отправляет мне правильный метод контроллера, но значение userName, которое я получаю, всегда null.

Вот метод прибудет в контроллере

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

Вопрос, почему это имя_пользователя всегда нуль в методе 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