2013-04-04 3 views
1

Я пытаюсь использовать ссылку действия ASP MVC3 для перехода к другому представлению (тот же контроллер). Представление привязано к модели, которая использует составной ключ для своего первичного ключа. Ниже приводится ссылка действие, как это написано на представленииASP MVC3 ActionLink не отображает переменные

@Html.ActionLink("Edit Agent", "AgentEdit", "BankListMasterController", 
               new { @agentId = int.Parse(item.AgentId), @id = item.ID}) 

Однако при этом оказывается, что делает, как следующий

http://localhost:2574/BankListMaster/AgentEdit?Length=24 

Который явно бросает ошибку:

The parameters dictionary contains a null entry for parameter 'agentId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ViewResult AgentEdit(Int32, Int32)' in 'Monet.Controllers.BankListMasterController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. 
Parameter name: parameters 

Вот метод контроллера для хорошей оценки:

public ViewResult AgentEdit(int agentId, int id) 
    { 
     string compare = agentId.ToString(); 

     BankListAgentId agent = (from c in db.BankListAgentId 
           where c.ID == id && 
             c.AgentId.Equals(compare) 
           select c).Single(); 

     return View("AgentEdit", agent); 
    } 

ответ

3
@Html.ActionLink("Edit Agent", "AgentEdit", "BankListMasterController", 
               new { agentId = int.Parse(item.AgentId), id = item.ID}, null) 

Это должно сделать трюк

и обоснование является: согласно http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(v=vs.108).aspx

Вы не найдете там метод с (HtmlHelper, строка, строка, строка, объект) есть, однако (HtmlHelper, строка , строка, строка, объект, объект), где вторым последним объектом являются значения маршрута, а последние - атрибуты html.

0

На основании параметров, которые вы предоставили, вызывается неправильный ActionLink.

Проблема заключается в том, что она «пытается сериализовать объект строки»

Вот канонический ответ на «параметра„Length“в связи» вопрос: Why does Html.ActionLink render "?Length=4"

Смежные вопросы