2016-04-13 4 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> 
とのリンクAのWebページショー:私はすべての製品を閲覧するユーザーのための私のページのリンクを持っています
+0

[このポスト](http://stackoverflow.com/questions/33035660/actionlink-generateによると、 -empty-href)あなたのコントローラは** Umbraco.Web.Mvc.SurfaceController **から継承してルートを取得する必要があります。これはあなたのための選択肢ですか? –

+0

こんにちは、 SurfaceControllerから継承するように変更しました。しかし、今実行しようとするとエラーが発生する HTTP 404リソースが/ umbraco/Surfaceに見つかりません 私のビューはすべてViewフォルダに保存されています。 Viewフォルダ内のビューを検索するための変更方法が不明です。 – Fahad

答えて

0

SurfaceControllerから継承する必要はありません。MVCチャイルドアクションのレンダリングやmデータ提出あなたのケースでは、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:テンプレートの物理テンプレートファイルが見つかりません 私はバックオフィスUmbracoをチェックして、 – Fahad

+0

文書タイプに「製品」という名前のテンプレートがありますか?また、プロジェクトの 'Views'フォルダ内に" Product.cshtml "という名前のファイルがありますか? – elolos