ASP.NET MVC - MapRoute по сравнению с маршрутами. Добавьте (и 404 с)

Пожалуйста, прекратите использовать HTMLWorker, как многократно повторялось в StackOverflow, класс HTMLWorker был оставлен в пользу XML Worker давным-давно. Мы не будем инвестировать в дальнейшее развитие HTMLWorker, поэтому использовать его очень плохо. Перейдите к XML Worker.

Также обновите до последней версии iText, версию, которую вы используете в датах с 4 февраля 2011 г. , за 4 года исправлено множество ошибок Прошло. Убедитесь, что у вас есть как контейнер iText, так и баннер XML Worker с тем же номером версии.

Изображения Base64 еще не поддерживаются, но я сделал вам очень простое доказательство концепции, показывая, насколько легко это заключается в добавлении поддержки для таких изображений. Взгляните на пример ParseHtml4 и полученный PDF: html_4.pdf .

Для этого вам нужно написать реализацию ImageProvider. Я сделал это, расширив класс AbstractImageProvider:

class Base64ImageProvider extends AbstractImageProvider {

    @Override
    public Image retrieve(String src) {
        int pos = src.indexOf("base64,");
        try {
            if (src.startsWith("data") && pos > 0) {
                byte[] img = Base64.decode(src.substring(pos + 7));
                return Image.getInstance(img);
            }
            else {
                return Image.getInstance(src);
            }
        } catch (BadElementException ex) {
            return null;
        } catch (IOException ex) {
            return null;
        }
    }

    @Override
    public String getImageRootPath() {
        return null;
    }
}

Как вы можете видеть, я проверяю существование "base64," в том, что передается XML-работнику через атрибут src тег img. Если присутствует String, я расшифровываю все, что следует за "base64,", и я возвращаю объект Image, который создается с помощью результирующих байтов.

После того, как вы создали эту реализацию ImageProvider, это только вопрос передачи его XML-работнику.

20
задан Fabian Steeg 4 February 2009 в 23:29
поделиться

3 ответа

Ваш Пользовательский контроллер должен иметь

public class UserController : Controller {
    public ActionResult Index(string domain, string username) { return View(); }
}

, Эти две переменные на Индексном методе пользовательского контроллера подняты с маршрута.

9
ответ дан 29 November 2019 в 23:17
поделиться

MapRoute() дополнительный метод более чем Routes.Add(). Используйте MapRoute(), если Вы не должны делать что-то более сложное, чем оно позволяет.

Маршруты оценены в порядке, они определяются, таким образом, они Вы звонили сначала.

37
ответ дан 29 November 2019 в 23:17
поделиться

Пользуйтесь!

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "User",                                                     
            "User/{domain}/{username}",                           
            new { controller = "User", action = "Index", username= UrlParameter.Optional }      
        );

       }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}
4
ответ дан 29 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: