2

Umbraco 7.0.3 では:

  1. マクロコンテナのプロパティエディタでマクロコンテナというデータ型を作成
  2. タイプ マクロ コンテナを持つ Body というプロパティを持つ Contact Form というドキュメント タイプを作成しました。
  3. _contactForm.cshtml という部分ビューを作成しました (Views\MacroPartials 内)。
  4. MVC 部分ビュー _contactFrom.cshtml で Contact Form というマクロを作成しました
  5. Contact Us というタイプの Contact Form の追加コンテンツ
  6. お問い合わせページの Body と呼ばれる Macro Container プロパティに Contact Form マクロを追加しました

次に、ページを表示するためSurface Controllerにいくつかを呼び出しAJAXます (より具体的には、ページの Body プロパティ)。

public class JsController : SurfaceController
{
    public ActionResult GetPage(int id)
    {
        var page = new Node(id);

        if (page == null || page.GetProperty("body") == null)
            return Content(@"Hmm, something went wrong. Unable to find what you're looking for.");

        return Content(page.GetProperty("body").Value);
    }
}

このセットアップはほとんど機能しますが、問題は、レンダリングされたフォームではなく、次のものが返されることです。

<!--?UMBRACO_MACRO macroAlias="ContactForm" /-->

したがって、このマクロ\フォーム\部分ビューをレンダリングする必要があります...おそらくコントローラーで行う必要があると思いますが、反対側で(Javascriptを介して)それを行うことができれば、それも同様に機能します. ページ ID とマクロ エイリアスに基づいてマクロをレンダリングするためにコントローラーで呼び出すことができる Umbraco 関数はありますか?

4

3 に答える 3

0

umbraco.library.RenderMacroContent を使用できませんでしたか?

于 2015-07-27T18:54:00.120 に答える
-3

コントローラー名には、名前に「Surface」が含まれている必要があります。

JsSurfaceController

また、ActionResult メソッドに [HttpPost] 属性を追加します。

http://our.umbraco.org/documentation/Reference/Mvc/surface-controllers http://our.umbraco.org/documentation/Reference/Mvc/forms

于 2014-03-27T05:10:03.803 に答える