Asp. net mvc произвольный маршрут
От: binom82 Россия  
Дата: 16.06.11 23:39
Оценка:
В папке Views у меня задана древовидная структура папок. В каждой папке находится вьюха Index.aspx

Views/Structure/Level1/...../Leveln/Index.aspx

Подскажите пожалуйста как разрешить такие маршруты в routes.MapRoute(), чтобы работала следующая ссылка
 <%=Html.ActionLink("Document", "/Structure/Level1/...../Leveln/Index.aspx")%>
Re: Asp. net mvc произвольный маршрут
От: RushDevion Россия  
Дата: 17.06.11 19:03
Оценка:
Как вы себе представляете работу такой строки?
Код вида <%=Html.ActionLink("SomeController", "SomeAction")%>
говорит "создать ссылку, при открытии которой отработает метод SomeAction контроллера SomeController.
А какой метод должен отработать в вашем случае?
Чтобы было еще понятнее — в MVC в отличие от ASP.NET следует думать не в терминах Page.aspx, которую нужно открыть
а в терминах Controller/Action/Route. И в общем случае в зависимости от настроенных маршрутов путь вида http:\\page1\page2\page3
может мапиться на любой метод любого контроллера.
Можете конечно сделать так:
routes.MapRoute(
    "Default",
    "{*path}", // Grap whole relative path of query string into path variable
    new { controller = "Test", action = "Test", path="/" } 
public ActionResult Test(string path)
{
   //TODO: какая-то логика поиска View по пути
   return View(test);
}

Но в общем случае, когда логика поиска View нетривиальна, то пишут свою реализацию IViewEngine.
Re[2]: Asp. net mvc произвольный маршрут
От: binom82 Россия  
Дата: 18.06.11 00:13
Оценка:
Здравствуйте, RushDevion, Вы писали:


Хорошо я поставлю вопрос по другому.

Как мне в Asp.net mvc (не используя базу данных) реализовать древовидную структуру.

Например административное деление какого нибудь региона России, чтобы каждой административной единице соответсвовала своя папка в которой хранятся вьюхи
Re[3]: Asp. net mvc произвольный маршрут
От: RushDevion Россия  
Дата: 18.06.11 08:51
Оценка:
Ну, если нужно только отображение, то как-то так (хотя зачем тут MVC ?):
routes.MapRoute("Default",  "{*pathInfo}", new { controller = "Home", action = "ShowItem" } 

public ActionResult ShowItem()
{
    var context = ControllerContext.RequestContext.HttpContext;
    var rawUrl = context.Request.RawUrl;
    var viewVirtualPath = rawUrl.EndsWith( ".aspx" ) ? rawUrl : rawUrl + ".aspx";

    var viewPhisicalPath = context.Server.MapPath( viewVirtualPath );
    if ( !System.IO.File.Exists( viewPhisicalPath ) )
        return Content( "Unknown view " + viewVirtualPath );
    return View( viewVirtualPath );
}

Ну, а если нужно редактирование — то лучше посмотреть пример какой-нибудь MVC Wiki.
Re[4]: Asp. net mvc произвольный маршрут
От: binom82 Россия  
Дата: 18.06.11 10:24
Оценка:
Здравствуйте, RushDevion, Вы писали:
Спасибо попробую
RD> (хотя зачем тут MVC ?):
Так уж получилось что часть функционала необходимо так реализовать. Но в остальном мне все нравится (пока!!!)в MVC
А что вы тогда посоветуете. Делать на WebForms?. Тогда зачем вообще нужен MVC если нет никакой гибкости?
Re[5]: Asp. net mvc произвольный маршрут
От: RushDevion Россия  
Дата: 18.06.11 10:53
Оценка:
B>А что вы тогда посоветуете. Делать на WebForms?. Тогда зачем вообще нужен MVC если нет никакой гибкости?

Ну мне сложно советовать предметно, учитывая, что задачу вы описали очень примерно.
Я вообще считаю, что следует подбирать инструмент под задачу, а не наоборот — где то MVC подойдет больше, где-то WebForms.
А в случае view-only иерархии субъектов РФ — проще вообще обойтись статичным HTML
Re[6]: Asp. net mvc произвольный маршрут
От: binom82 Россия  
Дата: 19.06.11 01:04
Оценка:
Здравствуйте, RushDevion, Вы писали:


RD>Ну мне сложно советовать предметно, учитывая, что задачу вы описали очень примерно.


Мне необходимо чтобы была возможность реализовать любую задачу.

А насчет описания задачи, то конечного результата я и сам не знаю (какие возможности предется реализовать в будущем), но
конечно не стоит ограничиваться только просмотром, и редактировать тоже гдето придется.

А вообще задача очень распространенная. Например сайты опреаторов сотовй связи. У них присутствует административное деление
и для каждой административной единицы они добавляют свой (любой) функционал. Например тарифы для разных регионов могут отличатся и по названию и по цене и т.д.

Что посоветуете для такой задачи?
Re[7]: Asp. net mvc произвольный маршрут
От: RushDevion Россия  
Дата: 19.06.11 08:41
Оценка:
В общем случае задача сводится к написанию движка, который поддерживает иерархию категорий, каждая из которых содержит некоторое количество страниц.
Здесь, думаю, стоит смотреть в сторону готовой CMS.
Вот здесь есть большой список с описанием. Там и на WebForms, и на MVC, многие — с открытым кодом.
Советую начать с Blog Engine .NET (WebForms) и Oxite (MVC) — это движки блогов, а не CMS, но весь нужный функционал там есть, а для понимания — проще.
Re[8]: Asp. net mvc произвольный маршрут
От: binom82 Россия  
Дата: 19.06.11 09:49
Оценка:
Спасибо, я посмотрю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.