<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}", Eval("CatalogID"), Eval("ProductID"))%>

Что я пытаюсь сделать:

 NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}",Eval("CatalogID"), (Eval("CatalogID")=="856" ? Eval("ProductID") : Eval("CustItem")))%>

Я пытаюсь установить обратную ссылку на элемент со страницы ... и я выполнил это для каждого элемента, кроме тех, что указаны в каталоге с идентификатором 856 ... URL-адрес выглядит так: storefront.aspx? CatalogID = 856 & ProductID = AVE05418, в этом примере один из каталога 856, проблема в том, что продукт, передаваемый в URL-адресе, на самом деле является переменной с именем CustItem, поэтому я пытаюсь передать CustItem вместо ProductID, когда каталог 856

Спасибо

4
Joe W 29 Авг 2011 в 23:26

3 ответа

Лучший ответ

Вы можете попробовать что-то вроде этого:

Eval("CatalogID") == 856 ? Eval("CustItem") : Eval("ProductID")

ИЗМЕНИТЬ

NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}",Eval("CatalogID"), (Eval("CatalogID").ToString() == "856" ? Eval("CustItem") : Eval("ProductID")))%>'
6
James Johnson 30 Авг 2011 в 19:19

Вы можете использовать тернарный оператор.

Eval((CatalogID==856) ? "CustItem" : "ProductID")

Намного лучше, чем это, было бы исправить плохие данные, которые попали в вашу базу данных, чтобы вы могли в первую очередь избежать этого уродства.

3
48klocs 29 Авг 2011 в 19:32

Кто-нибудь может подсказать, как поступить в данной ситуации?

Я бы исправил это на уровне базы данных. Данные просто неверны.

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

Разрешение Eval в вашем URL просто напрашивается на проблемы.

1
Merlyn Morgan-Graham 29 Авг 2011 в 19:32