2016-04-13 3 views
1

Я только начал изучать Umbraco, я начал небольшой проект, чтобы узнать Umbraco. У меня возникла проблема с созданием настраиваемого контроллера. У меня есть ссылка на моей странице для пользователя, чтобы просмотреть все продукты:Пользовательский контроллер Umbraco

@Html.ActionLink("View more", "Index", "Product", null, new { title = "Browse all Products" }) 

контроллер

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Umbraco.Web.Models; 
using Umbraco.Web.Mvc; 

namespace Test.Controllers 
{ 
    public class ProductController : Umbraco.Web.Mvc.RenderMvcController 
    { 
     public override ActionResult Index(RenderModel model) 
     { 
      return View("Products"); 
     } 
    } 
} 

По какой-то причине веб-странице Покажите ссылку с пустым HREF

<a href="" title="Browse all Products">View more</a> 
+0

Согласно [эту должность] (http://stackoverflow.com/questions/33035660/actionlink-generate -empty-href), ваш контроллер должен унаследовать от ** Umbraco.Web.Mvc.SurfaceController **, чтобы маршрут был выбран. Это вариант для вас? –

+0

Привет, Я поменял его наследовать от SurfaceController. Но теперь, когда я пытаюсь запустить, я получаю ошибку HTTP 404 resouce не найден в/umbraco/Surface Где, как все мои представления хранятся в папке «Просмотр». Не знаете, как изменить его, чтобы искать представления в папке «Просмотр». – Fahad

ответ

0

Вам необязательно наследовать от SurfaceController, так как они обычно используются для рендеринга дочерних действий MVC и для обработки м представления данных. В вашем случае достаточно контроллера наследующего от Umbraco.Web.Mvc.RenderMvcController.

Сначала проверьте раздел настроек Umbraco и убедитесь, что существует тип документа, называемый Product. Umbraco следует этому соглашению для маршрутизации, поэтому все страницы типа Product будут перенаправлены на ваш ProductController. Это соглашение о маршрутизации также может помочь правильному построению ссылки на действие HtmlHelper.

Согласно documentation, отображение работает следующим образом:

  • Тип документа Имя Имя = Контроллер
  • Имя шаблона Имя = действие
  • , если никакое действие не соответствует или не указано, то «индекс 'действие будет выполнено.

Наконец, убедитесь, что действие вашего контроллера возвращает вид шаблона. Например, если используется тип по умолчанию RenderModel, вы можете просто вернуть вид шаблона для типа документа:

public override ActionResult Index(RenderModel model) 
{ 
    return base.Index(model); 
} 
+0

Привет, Я следовал вашим инструкциям, теперь я получаю сообщение об ошибке: System.Exception: для шаблона не найдено файла физического шаблона. Продукт Я проверил в backoffice Umbraco, и я не могу увидеть что-нибудь wromg с ним. – Fahad

+0

Имеет ли тип документа шаблон с названием «Продукт»? Кроме того, вы можете увидеть файл с именем «Product.cshtml» в папке «Представления» вашего проекта? – elolos

Смежные вопросы