Как динамически создавать маршруты в HTML-ссылке - PullRequest
1 голос
/ 14 февраля 2010

Я пытаюсь отправить значения маршрута в метод, но я не могу понять это. Вот мой код

<%  string s = "cool";
    object d = new {  s = "1" };

         %>
<%= Html.ActionLink("Home", "Index", d, "ql")%>

Следующий код создает URL-адрес, подобный этому

http://localhost:49450/?s=1

URL должен быть таким

http://localhost:49450/?cool=1

Чего мне не хватает

1 Ответ

2 голосов
/ 14 февраля 2010

, поскольку в контексте выражения 'new {...}' 's' не соответствует переменной, как это может показаться вначале, - оно определяет имя члена создаваемого анонимного класса. 1001 *

когда вы говорите:

новый {S = 123}

вы на самом деле генерируете класс, который является анонимным (вам никогда не удастся увидеть имя класса). Тип каждого члена класса неявно определяется тем, что вы ему назначаете. В приведенном выше примере генерируется что-то вроде этого

class AnonymousClass_S483Ks4 {
 public int S {get;set;}
}

Есть два способа сделать то, что вы хотите:

1) вы бы сказали:

new { cool = 123 } 

2) Теперь я предполагаю, что вы хотите, чтобы имя было динамическим, поэтому вам нужно использовать RouteValueDictionary, который позволяет вам помещать пары ключ-значение.

        // RouteValueDictionary is IDictionary<string, object>
        var dictionary = new RouteValueDictionary();  
        string s = "cool";
        dictionary.Add(s, 123);
        htmlHelper.ActionLink("Home", "Index", dictionary);

Как видите, здесь вы можете использовать переменную 's' для представления того, что вы хотите. Это должно дать вам URL, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...