, поскольку в контексте выражения '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, который вам нужен.