Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Orchard和master细节编辑_Asp.net_Asp.net Mvc 3_Orchardcms - Fatal编程技术网

Asp.net Orchard和master细节编辑

Asp.net Orchard和master细节编辑,asp.net,asp.net-mvc-3,orchardcms,Asp.net,Asp.net Mvc 3,Orchardcms,我正在阅读,如果可以轻松地进行主细节编辑的话,我无法理解,给你一个具体的例子,我附上了wordpress的截图: 因此,存在post,post包含一组自定义字段、简单的1:N关系、在一个页面中编辑的所有内容-您可以在不离开post页面的情况下添加/编辑自定义字段。 可能有人在互联网上看到了类似的Orchard示例,或者可以很快通过代码描述实现这一点的路径,这将非常有帮助(我希望不仅仅是对我来说,因为我认为这是非常常见的情况)。这应该是可能的,尽管不是以最“果园化”的方式 我没有测试过下面的任何一

我正在阅读,如果可以轻松地进行主细节编辑的话,我无法理解,给你一个具体的例子,我附上了wordpress的截图:

因此,存在post,post包含一组自定义字段、简单的1:N关系、在一个页面中编辑的所有内容-您可以在不离开post页面的情况下添加/编辑自定义字段。

可能有人在互联网上看到了类似的Orchard示例,或者可以很快通过代码描述实现这一点的路径,这将非常有帮助(我希望不仅仅是对我来说,因为我认为这是非常常见的情况)。

这应该是可能的,尽管不是以最“果园化”的方式

我没有测试过下面的任何一个,所以它可能充满了错误-但也许今天晚些时候Bertrand或Pszmyd会来纠正我:-)

您可能已经看到,在编辑器驱动程序中创建内容形状时,可以将视图模型传递给视图:

protected override DriverResult Editor(CatPart part, dynamic shapeHelper)
{
    // Driver for our cat editor
    var viewModel = new CatViewModel
    {
        Cats = _catService.GetCats() // Cats is IEnumerable<Cat>
    };

    return ContentShape("Parts_CatPart_Edit",
        () => shapeHelper.EditorTemplate(
           TemplateName: "Parts/CatPart",
           Model: viewModel,
           Prefix: Prefix
        ));
}
这对于字符串或整数等基本信息非常有效。但我一直无法使用(也不确定是否可以使用)在客户端编辑的动态列表

解决这个问题的一种方法是为1:N关系的N端上的项目设置按钮,以便它们发回MVC控制器。然后,该控制器可以更新模型,并将客户端重定向回它们来自的编辑器,显示记录的更新版本。这需要您一致地设置在客户端添加的元素的HTML ID/Name属性,以便在向控制器发出POST请求时可以读取这些元素,或者创建直接提交给控制器的独立嵌套表单

因此,您的观点可能会变成:

@foreach(var cat in Model.Cats)
{
    <form action="/My.Module/MyController/MyAction" method="POST">
        <input type="hidden" name="cat-id" value="@cat.Id" />
        <span class="cat">
            <p>@cat.Name</p>
            <input type="submit" name="delete" value="Delete Cat" />
        </span>
    </form>
}
<form action="/My.Module/MyController/AddItem" method="POST">
    <input type="hidden" name="part-id" value="<relevant identifier>" />
    <input type="submit" name="add" value="Add Cat" />
</form>
@foreach(Model.Cats中的var cat)
{
@猫名

}
另一种可能是创建一个控制器,该控制器可以以XML/JSON的形式返回相关数据,并使用Javascript在客户端实现这一切

由于内容项(及其所有部分)尚不存在,您可能需要进行一些黑客操作,才能在新记录的编辑器上实现这一点(考虑创建内容项与创建内容项)


我希望这一切都是有意义的,如果你有任何问题,请告诉我:-)

你是想作为一个普通的ASP MVC控制器还是在一个可以附加到内容项的内容部分上做这件事?我在考虑内容部分。嗯,我发现我需要先自己尝试很多事情,以便更熟悉Orchard中的一切工作方式,到目前为止,一切都不那么简单。我会把这个问题再开放几天,如果没有更好的答案,我会把你的帖子标记为答案。很抱歉,挖出一篇旧帖子,但如果不使用驱动程序,你将如何完成同样的任务?我想你会在控制器里做驱动程序的事情?你能给我举个例子吗?多谢。
protected override DriverResult Editor(CatPart part, IUpdateModel updater, dynamic shapeHelper)
{
    var viewModel = new CatViewModel();
    if (updater.TryUpdateModel(viewModel, Prefix, null, null))
    {
        // Access stuff altered in the Cat view model, we can then update the CatPart with this info if needed.
    }
}
@foreach(var cat in Model.Cats)
{
    <form action="/My.Module/MyController/MyAction" method="POST">
        <input type="hidden" name="cat-id" value="@cat.Id" />
        <span class="cat">
            <p>@cat.Name</p>
            <input type="submit" name="delete" value="Delete Cat" />
        </span>
    </form>
}
<form action="/My.Module/MyController/AddItem" method="POST">
    <input type="hidden" name="part-id" value="<relevant identifier>" />
    <input type="submit" name="add" value="Add Cat" />
</form>