2015-02-10 7 views
0

Я создал функцию расширения для UrlHelper, которая упрощает запись параметров. Он просто принимает два строковых параметра и возвращает строку желаемого формата. В моем случае это работает так:Как решить ошибку «ошибка недействительного анонимного типа»

public static string CustomAction(this UrlHelper helper, string key, string value) 
{ 
    return HttpUtility.UrlEncode("(" + key + "=" + value + ")"); 
} 

Проблема я столкнулся сейчас, когда я использую эту функцию внутри URL.ACTION больше, чем когда-то он дает мне ошибку «неверный анонимный пользователь типа замедлитель». Может кто-нибудь сказать мне, как я могу решить эту проблему?

Пример:

Url.Action("someAction", "someController", new { where = Url.CustomWhereAction("user.ID", Url.UrlParams("id")), Url.CustomWhereAction("person.ID", Url.UrlParams("id")) }) 

Просто для уточнения:

Url.UrlParams() 

другая функция, которая позволяет избежать выдвижения программиста, чтобы написать код для извлечения значения routeData.

+1

Поскольку ошибка пытается сказать вам, ваш синтаксис не имеет смысла. Какое имя свойства вы пытаетесь создать? – SLaks

+2

Не пытайтесь поместить все это на одну строку; как минимум, добавить разрывы строк в соответствующих местах. Если вы это сделаете, ваша синтаксическая ошибка должна стать более очевидной. Если этого недостаточно, разделите его на несколько операторов. Чем меньше утверждение, тем меньше вероятность того, что у вас будут синтаксические ошибки, и тем легче их найти. – Servy

+0

Ну, я нашел проблему, я должен дать свойство какое-то имя. Вроде: новый {where = Url.CustomWhereAction ("user.ID", Url.UrlParams ("id")), AND = Url.CustomWhereAction ("person.ID", Url.UrlParams ("id")) } – Capri82

ответ

0

у вас есть

Url.Action("someAction", "someController", new { 
where = Url.CustomWhereAction("user.ID", Url.UrlParams("id")), 
Url.CustomWhereAction("person.ID", Url.UrlParams("id")) 
}) 

это недопустимый синтаксис вы имеете в виду

Url.Action("someAction", "someController", new { 
where = Url.CustomWhereAction("user.ID", Url.UrlParams("id")), 
where2 = Url.CustomWhereAction("person.ID", Url.UrlParams("id")) 
}) 
+0

Нет, нижняя часть права. Имя свойства должно быть объявлено. В этом случае имена «где» и «где2» являются именами свойств. – Capri82

+0

да, но в вашем коде у вас нет второго имени, у вас есть первый код, который я показываю, где, но нет где2 – pm100

+0

Да, вторая часть права. Код шахты неверен. – Capri82