Сложность с условной привязкой данных - PullRequest
0 голосов
/ 20 сентября 2009

Я изо всех сил пытался найти способ выполнить требуемое условное связывание.

Я хочу использовать Eval("products_image") в условном связывании таким образом, что если product_image существует в каталоге images, тогда все в порядке, в противном случае должно отображаться «noimage.jpg».

Я пытался сделать это так:

<%# (File.Exists(("ProductImages/"+Convert.ToString(Eval("products_image"))))) ? ("ProductImages/"+Convert.ToString(Eval("products_image"))) : "ProductImages/noimage_small.jpg" ; %>

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

Кто-нибудь может подсказать мне правильный способ сделать это?

Ответы [ 2 ]

1 голос
/ 20 сентября 2009
<%# (File.Exists(("ProductImages/"+Convert.ToString(Eval("products_image"))))) ? ("ProductImages/"+Convert.ToString(Eval("products_image"))) : "ProductImages/noimage_small.jpg" ; %>

Довольно долго и нечитаемо, не правда ли?

Я бы предложил добавить метод к вашему коду или в теге <script>

.
// returns the imageFile parameter if the file exists, the defaultFile parameter otherwise
string ImageFileExists(string imageFile, string defaultFile) {
    if (File.Exists(Server.MapPath(imageFile)))
        return imageFile;
    else
        return defaultFile;
}

И тогда вы просто используете

<%# ImageFileExists("ProductImages/" + Eval("products_image").ToString(), "ProductImages/noimage_small.jpg") %>

Обратите внимание, что я добавил Server.MapPath вызов метода, чтобы File.Exists действительно выглядел в нужном месте.

0 голосов
/ 20 сентября 2009

Я только что переместил весь тег <script> и System.IO пространство имен в сам файл usercontrol .ascx, и он это сделал.

Спасибо за тонну Конфигуратору за помощь:)

...