Orchard CMS рендеринг частей вне раздела администратора - PullRequest
1 голос
/ 01 июля 2011

Я работаю над модулем, следуя инструкциям здесь http://orchardproject.net/docs/Creating-a-module-with-a-simple-text-editor.ashx

Единственное изменение, которое я хочу сделать, - это создание продукта вне модуля администратора. Итак, я создал homecontroller, как это

public class HomeController : Controller
{

    public HomeController(IContentManager cm) {
        ContentManager = cm;
    }

    private IContentManager ContentManager { get; set; }



 public ActionResult Index() {
        return Content("This is index");

    }        [Themed]
    public ActionResult Create()
    {
        var product = ContentManager.New("Product");
        var model = ContentManager.BuildEditor(product);
        return View((object) model);

    }

и файл rout.cs в корневой папке

public class Routes : IRouteProvider
{
    public void GetRoutes(ICollection<RouteDescriptor> routes)
    {
        foreach (var routeDescriptor in GetRoutes())
            routes.Add(routeDescriptor);
    }

    public IEnumerable<RouteDescriptor> GetRoutes()
    {
        return new[] {
            new RouteDescriptor {
                Priority = 5,
                Route = new Route(
                    "commerce",
                    new RouteValueDictionary {
                        {"area", "SimpleCommerce"},
                        {"controller", "Home"},
                        {"action", "Index"}
                    },
                    new RouteValueDictionary(),
                    new RouteValueDictionary {
                        {"area", "SimpleCommerce"}
                    },
                    new MvcRouteHandler())
            },
            new RouteDescriptor {
                Priority = 6,
                Route = new Route(
                    "commerce/Create",
                    new RouteValueDictionary {
                        {"area", "SimpleCommerce"},
                        {"controller", "Home"},
                        {"action", "Create"}
                    },
                    new RouteValueDictionary(),
                    new RouteValueDictionary {
                        {"area", "SimpleCommerce"}
                    },
                    new MvcRouteHandler())
            }

        };
    }
}

Итак, как мне двигаться дальше, чтобы сделать все это вместе, когда я перейду к URL http://localhost:35713/commerce/create

Но выдает ошибку, говорящую, что Create View не нашел. Затем я создал представление (create.cshtml) в папке Views / Home

@model SimpleCommerce.Models.ProductPart
<fieldset>
    <label class="sub" for="Sku">@T("Sku")</label><br />
    @Html.TextBoxFor(m => m.Sku, new { @class = "text" })<br />
    <label class="sub" for="Price">@T("Price")</label><br />
    @Html.TextBoxFor(m => m.Price, new { @class = "text" })
</fieldset>

Теперь выдает ошибку: 1017 *

Элемент модели, передаваемый в словарь, имеет тип 'IShapeProxyedcfa08c61cf49898dc2e77bde025039', но для этого словаря требуется элемент модели типа 'SimpleCommerce.Models.ProductPart'.

1 Ответ

1 голос
/ 01 июля 2011

О, это кросс-пост.BuildEditor создает фигуру, а ваш шаблон ожидает строго типизированную модель.Удаление директивы @Model должно заменить эту проблему другой (то есть то, что вы не сможете использовать лямбда-помощники с фигурами.

...