2013-06-22 6 views
0

В контроллере у меня есть:новообращенный ViewBag в routeValues ​​

ViewBag.SomeObject = "IntVal=5&StrVal=Hello"; 

В связи у меня есть:

@Html.ActionLink("a", "b", "c", new { page = 5, ViewBag.SomeObject }, null) 

Это дает мне ссылку:

/c/b?page=5&SomeObject=&IntVal=5&StrVal=Hello 

Но я не хочу SomeObject = & в URL-адресе, поэтому правильная ссылка должна выглядеть:

/c/b?page=5&IntVal=5&StrVal=Hello 

Как я могу это сделать?

+0

Пробовали ли вы явно отливку '' ViewBag' к string'? Например, так: '(string) ViewBag.SomeObject' –

+0

Да, но потом у меня есть ошибка« Invalid anonymous type member declarator » – michael

+0

Поскольку Razor не смог вывести имя параметра, если бы вы поставили что-то вроде' param = (string) ViewBag.SomeObject', он должен компиляции. Но тогда это не так, как вы ожидали. Я предлагаю вам добавить IntVal и StrVal в отдельный ViewBag. Что-то вроде 'IntVal = (string) ViewBag.IntVal' и т. Д. –

ответ

0

Вы можете пройти RouteValueDictionary непосредственно в ViewBag. Как и ...

@Html.ActionLink("LinkText", "ActionName", new RouteValueDictionary(ViewBag.RouteValues)) 

Затем в Controller вас будет ...

ViewBag.RouteValues = new RouteValueDictionary(new { 
     Page = 5, 
     IntVal = 5, 
     StrVal = "Hello" 
    }); 
Смежные вопросы