在 Orchard 中创建/编辑后清空内容项

2023-12-23

我正在使用在 Orchard 中创建 n-to-n 关系的指南 (ocs.orchardproject.net/Documentation/Creating-1-n-and-n-n-relations),并进行一些细微的修改。虽然示例代码运行良好,但在创建或编辑项目后,我自己的内容部分始终为空白。我无法弄清楚,因为我swear我的代码几乎与他们的相同(除了具有更多/更少不相关字段的内容部分)。

我怀疑这可能与驱动程序中的前缀有关。我真的不知道前缀应该做什么,但是将其设置为一个值会在创建/编辑时产生运行时错误,其他值只会产生所有字段为空的结果。

原始示例工作正常,所以它必须是我做了或没有做的事情,但我只是不知道它是什么。

一些相关课程:

using System.Linq;
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using ArealAds.Models;
using ArealAds.Services;
using ArealAds.ViewModels;

namespace ArealAds.Drivers {
    [UsedImplicitly]
    public class StreetPartDriver : ContentPartDriver<StreetPart> {
        private readonly IStreetService _streetService;

        private const string TemplateName = "Parts/Street";

        public StreetPartDriver(IStreetService streetService) {
            _streetService = streetService;
        }

        // this one gives a runtime error with blank description,
        // other values produce result with all fields blank
        protected override string Prefix {
            get { return "Area"; }
        }

        protected override DriverResult Display(StreetPart part, string displayType, dynamic shapeHelper) {
            return ContentShape("Parts_Street",
                            () => shapeHelper.Parts_Street(
                                ContentPart: part,
                                Name: part.Name,
                                Areas: part.Areas,
                                Districts: part.Districts));

        }

        protected override DriverResult Editor(StreetPart part, dynamic shapeHelper) {
            return ContentShape("Parts_Street_Edit",
                    () => shapeHelper.EditorTemplate(
                        TemplateName: TemplateName,
                        Model: BuildEditorViewModel(part),
                        Prefix: Prefix));
        }

        protected override DriverResult Editor(StreetPart part, IUpdateModel updater, dynamic shapeHelper) {
            var model = new EditStreetViewModel();
            updater.TryUpdateModel(model, Prefix, null, null);

            if (part.ContentItem.Id != 0) {
                _streetService.UpdateAreasForContentItem(part.ContentItem, model.Areas);
            }

            return Editor(part, shapeHelper);
        }

        private EditStreetViewModel BuildEditorViewModel(StreetPart part) {
            var itemAreas = part.Areas.ToLookup(r => r.Id);
            return new EditStreetViewModel {
                Areas = _streetService.GetAreas().Select(r => new AreaEntry {
                    Area = r,
                    IsChecked = itemAreas.Contains(r.Id)
                }).ToList()
            };
        }
    }
}


using System.Collections.Generic;
using System.Linq;
using Orchard;
using Orchard.ContentManagement;
using Orchard.Data;
using ArealAds.Models;
using ArealAds.ViewModels;

namespace ArealAds.Services {
    public interface IStreetService : IDependency {
        void UpdateAreasForContentItem(ContentItem item, IEnumerable<AreaEntry> areas);
        IEnumerable<AreaRecord> GetAreas();
    }

    public class StreetService : IStreetService {
        private readonly IRepository<AreaRecord> _areaRepository;
        private readonly IRepository<StreetAreaRecord> _streetAreaRepository;

        public StreetService(
            IRepository<AreaRecord> areaRepository,
            IRepository<StreetAreaRecord> streetAreaRepository) {

            _areaRepository = areaRepository;
            _streetAreaRepository = streetAreaRepository;
        }

        public void UpdateAreasForContentItem(ContentItem item, IEnumerable<AreaEntry> areas) {
            var record = item.As<StreetPart>().Record;
            var oldAreas = _streetAreaRepository.Fetch(
                r => r.StreetRecord == record);
            var lookupNew = areas
                .Where(e => e.IsChecked)
                .Select(e => e.Area)
                .ToDictionary(r => r, r => false);
            // Delete the areas that are no longer there and mark the ones that should stay
            foreach(var streetAreaRecord in oldAreas) {
                if (lookupNew.ContainsKey(streetAreaRecord.AreaRecord)) {
                    lookupNew[streetAreaRecord.AreaRecord] = true;
                }
                else {
                    _streetAreaRepository.Delete(streetAreaRecord);
                }
            }
            // Add the new areas
            foreach(var area in lookupNew.Where(kvp => !kvp.Value).Select(kvp => kvp.Key)) {
                _streetAreaRepository.Create(new StreetAreaRecord {
                    StreetRecord = record,
                    AreaRecord = area
                });
            }
        }

        public IEnumerable<AreaRecord> GetAreas() {
            return _areaRepository.Table.ToList();
        }
    }
}


using System.ComponentModel.DataAnnotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Records;

namespace ArealAds.Models {
    public class StreetAreaRecord : ContentPartRecord {
        public virtual StreetRecord StreetRecord { get; set; }
        public virtual AreaRecord AreaRecord { get; set; }
    }
}

using System;
using System.Collections.Generic;
using System.Data;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders;
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;
using ArealAds.Models;

namespace ArealAds {
    public class Migrations : DataMigrationImpl {

        public int Create() {
            //
            // Street-Area-District
            //

            SchemaBuilder.CreateTable("DistrictRecord", table => table
                .ContentPartRecord()
                .Column<string>("Name")
            );

            ContentDefinitionManager.AlterPartDefinition(
                typeof(DistrictPart).Name, cfg => cfg.Attachable());

            ContentDefinitionManager.AlterTypeDefinition(
                "District", cfg => cfg
                .WithPart("CommonPart")
                .WithPart("DistrictPart")
                .Creatable()
            );

            SchemaBuilder.CreateTable("AreaRecord", table => table
                .ContentPartRecord()
                .Column<string>("Name")
                .Column<int>("DistrictRecord_Id")
            );

            ContentDefinitionManager.AlterPartDefinition(
                typeof(AreaPart).Name, cfg => cfg.Attachable());

            ContentDefinitionManager.AlterTypeDefinition(
                "Area", cfg => cfg
                .WithPart("CommonPart")
                .WithPart("AreaPart")
                .Creatable()
            );

            SchemaBuilder.CreateTable("StreetRecord", table => table
                .ContentPartRecord()
                .Column<string>("Name")
            );

            ContentDefinitionManager.AlterPartDefinition(
                typeof(StreetPart).Name, cfg => cfg.Attachable());

            ContentDefinitionManager.AlterTypeDefinition(
                "Street", cfg => cfg
                .WithPart("CommonPart")
                .WithPart("StreetPart")
                .Creatable()
            );

            SchemaBuilder.CreateTable("StreetAreaRecord", table => table
                .Column<int>("Id", column => column.PrimaryKey().Identity())
                .Column<int>("StreetRecord_Id")
                .Column<int>("AreaRecord_Id")
            );


            //
            // Address-Ad
            //

            SchemaBuilder.CreateTable("AddressRecord", table => table
                .ContentPartRecord()
                .Column<int>("StreetRecord_Id")
                .Column<int>("Building")
                .Column<int>("Kor")
                .Column<int>("Str")
                .Column<int>("Vl")
                .Column<string>("Note")
                .Column<int>("AreaRecord_Id")
                .Column<int>("DistrictRecord_Id")
                .Column<string>("Phone1")
                .Column<string>("Phone2")
                .Column<string>("Phone3")
            );

            ContentDefinitionManager.AlterPartDefinition(
                typeof(AddressPart).Name, cfg => cfg.Attachable());


            return 1;
        }
    }
}

@model ArealAds.ViewModels.EditStreetViewModel
<fieldset>
    <legend>Улица</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.Street.Name)
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.Street.Name)
        @Html.ValidationMessageFor(model => model.Street.Name)
    </div>
<ul>

@for (int i = 0; i < Model.Areas.Count; i++) {
    <li>
        <input type="hidden" value="@Model.Areas[i].Area.Id"
               name="@Html.FieldNameFor(m => m.Areas[i].Area.Id)"/>

        <label for="@Html.FieldNameFor(m => m.Areas[i].IsChecked)">

            <input type="checkbox" value="true"
                name="@Html.FieldNameFor(m => m.Areas[i].IsChecked)"
                id="@Html.FieldNameFor(m => m.Areas[i].IsChecked)"
                @if (Model.Areas[i].IsChecked) {<text>checked="checked"</text>}/>

            @Model.Areas[i].Area.Name
        </label>
    </li>
}
</ul>
</fieldset>

几天来我一直在为此苦恼,请提出任何你认为理论上可能有帮助的建议,因为我很绝望:(

UPD:StreetHandler 类:

using ArealAds.Models;
using Orchard.ContentManagement.Handlers;
using Orchard.Data;

namespace ArealAds.Handlers {
    public class StreetHandler : ContentHandler {
        public StreetHandler(IRepository<StreetRecord> repository) {
            Filters.Add(StorageFilter.For(repository));
        }
    }
}

日志中有一个异常:

2012-04-10 00:07:58,515 [7] Orchard.ContentManagement.Drivers.Coordinators.ContentPartDriverCoordinator - IdentifierGenerationException thrown from IContentPartDriver by ArealAds.Drivers.StreetPartDriver
NHibernate.Id.IdentifierGenerationException: attempted to assign id from null one-to-one property: ContentItemRecord
   â NHibernate.Id.ForeignGenerator.Generate(ISessionImplementor sessionImplementor, Object obj)
   â NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
   â NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event)
   â NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event)
   â NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event)
   â NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
   â NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
   â NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
   â NHibernate.Impl.SessionImpl.Save(Object obj)
   â Orchard.Data.Repository`1.Create(T entity) â d:\TeamCity\Projects\Orchard-Default\src\Orchard\Data\Repository.cs:ñòðîêà 96
   â Orchard.Data.Repository`1.Orchard.Data.IRepository<T>.Create(T entity) â d:\TeamCity\Projects\Orchard-Default\src\Orchard\Data\Repository.cs:ñòðîêà 36
   â ArealAds.Services.StreetService.UpdateAreasForContentItem(ContentItem item, IEnumerable`1 areas) â c:\Users\Mom\Teritoriya\Modules\ArealAds\Services\Street.cs:ñòðîêà 46
   â ArealAds.Drivers.StreetPartDriver.Editor(StreetPart part, IUpdateModel updater, Object shapeHelper) â c:\Users\Mom\Teritoriya\Modules\ArealAds\Controllers\Street.cs:ñòðîêà 47
   â System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
   â Orchard.ContentManagement.Drivers.ContentPartDriver`1.Orchard.ContentManagement.Drivers.IContentPartDriver.UpdateEditor(UpdateEditorContext context) â d:\TeamCity\Projects\Orchard-Default\src\Orchard\ContentManagement\Drivers\ContentPartDriver.cs:ñòðîêà 30
   â Orchard.ContentManagement.Drivers.Coordinators.ContentPartDriverCoordinator.<>c__DisplayClass10.<UpdateEditor>b__f(IContentPartDriver driver) â d:\TeamCity\Projects\Orchard-Default\src\Orchard\ContentManagement\Drivers\Coordinators\ContentPartDriverCoordinator.cs:ñòðîêà 61
   â Orchard.InvokeExtensions.Invoke[TEvents](IEnumerable`1 events, Action`1 dispatch, ILogger logger) â d:\TeamCity\Projects\Orchard-Default\src\Orchard\InvokeExtensions.cs:ñòðîêà 19

编辑:一些模型类:

using System.ComponentModel.DataAnnotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Records;

namespace ArealAds.Models {
    public class AreaRecord : ContentPartRecord {
        public virtual string Name { get; set; }
        public virtual DistrictRecord DistrictRecord { get; set; }
    }

    public class AreaPart : ContentPart<AreaRecord> {
        [Required]
        public string Name {
            get { return Record.Name; }
            set { Record.Name = value; }
        }

        [Required]
        public DistrictRecord DistrictRecord {
            get { return Record.DistrictRecord; }
            set { Record.DistrictRecord = value; }
        }
    }
}

using System.Collections.Generic;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Records;

namespace ArealAds.Models {
    public class StreetRecord : ContentPartRecord {
        public virtual string Name { get; set; }
        public virtual IList<StreetAreaRecord> Areas { get; set; }

        public StreetRecord() {
            Areas = new List<StreetAreaRecord>();
        }
    }

    public class StreetPart : ContentPart<StreetRecord> {
        [Required]
        public string Name {
            get { return Record.Name; }
            set { Record.Name = value; }
        }

        public IEnumerable<AreaRecord> Areas {
            get {
                return Record.Areas.Select (r => r.AreaRecord);
            }
        }

        public IEnumerable<DistrictRecord> Districts {
            get {
                return Record.Areas.Select (r => r.AreaRecord.DistrictRecord).Distinct();
            }
        }
    }
}

using System.ComponentModel.DataAnnotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Records;

namespace ArealAds.Models {
    public class StreetAreaRecord : ContentPartRecord {
        public virtual StreetRecord StreetRecord { get; set; }
        public virtual AreaRecord AreaRecord { get; set; }
    }
}

using ArealAds.Models;
using Orchard.ContentManagement.Handlers;
using Orchard.Data;

namespace ArealAds.Handlers {
    public class AreaHandler : ContentHandler {
        public AreaHandler(IRepository<AreaRecord> repository) {
            Filters.Add(StorageFilter.For(repository));
        }
    }
}

using ArealAds.Models;
using Orchard.ContentManagement.Handlers;
using Orchard.Data;

namespace ArealAds.Handlers {
    public class StreetHandler : ContentHandler {
        public StreetHandler(IRepository<StreetRecord> repository) {
            Filters.Add(StorageFilter.For(repository));
        }
    }
}

您的 StreetAreaRecord 模型缺少 Id 属性。由于它不是 ContentPartRecord,因此您必须手动设置该属性。

public virtual int Id { get; set; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Orchard 中创建/编辑后清空内容项 的相关文章

  • “更新/取消”按钮不会出现在模板字段编辑按钮中

    当您使用 Gridview 的每一行创建编辑按钮时CommandField单击后它会显示更新 取消按钮 以便您可以接受 取消更改 但是 我想要一个带有工具提示文本的编辑按钮 因为CommandField没有工具提示属性 我用过Templat
  • 如何在 ASP.NET MVC 中手动设置用户角色?

    我正在从事的这个项目要求我保留管理员用户的本地数据库 并为普通用户使用外部数据库 在管理数据库中通过身份验证的任何人都应被分配 管理员 角色 而通过其他数据库进行身份验证的任何人将始终被分配 用户 角色 我可以手动分配这些角色吗 我不需要角
  • 无法使用 Javascript 重定向到另一个页面

    在 html 文件中使用 Javascript 重定向页面 我这样使用 window location href http www google com 它工作正常 但是当我在 aspx 中尝试时它不起作用 下面是我的代码 提前致谢
  • 如何在登录名控件中显示用户名

    我有一个母版页 其中包含基于母版页的所有后续页面上显示的登录视图内容 我有一个用户名控件也嵌套在登录视图中 用于在用户登录时显示用户名 母版页中登录视图的代码显示如下 div class loginView div
  • 如何使用 BoundFields 将 FooterTemplate 添加到 GridView

    希望您周末愉快 终于我有了一些编辑 删除事件器来与 LINQ 支持一起工作 我有一个添加记录事件 我知道它正在工作 但是在尝试了一部分之后 我不知道如何在页脚中添加一些文本框 所以它是从页眉到页脚的一行 没有向右或向左移动 有人可以帮助我吗
  • ASP.Net 控件的 InnerHTML 和 InnerText 属性之间的区别?

    例如 在使用 ASP NET 控件时 h1 text h1 如果我们想更改标题的文本 我们可以通过两个属性来完成InnerHTML and InnerText 我想知道这两个属性之间的基本区别是什么 InnerHtml让您直接输入 HTML
  • 如何正确链接不同View之间

    我有一个master cshtml带有导航栏 我的第一个链接是另一个视图 ProjectManagement li a href Views ProjectManagement cshtml Project Management a li
  • 路径访问被拒绝 VS 2017 无法复制文件

    最近 Visual Studio 遇到了最奇怪的问题 我正在运行 2017 年 我有一个与同事合作了一段时间的存储库 有一天我突然尝试构建 但遇到了一些错误 内容如下 访问路径 function json 被拒绝 然后 在多次尝试构建和清理
  • 为什么静态方法不能用作 ASMX Web 服务中的 Web 服务操作?

    我只是想了解为什么我不能在 Web 服务中使用静态 Web 方法 为什么会受到限制 有人可以给我对此进行简洁的解释吗 答案是 因为你不能 它不是这样设计的 其设计是 将创建 Web 服务类的实例 然后调用实例方法 我只能猜测微软为什么这样设
  • 同一服务器上的多个.NET版本

    所以我一直都知道在一台计算机 客户端或服务器 上运行多个版本的 NET 框架是可以的 这个问题 https stackoverflow com questions 407306 running many versions of net on
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 如何强制 Visual Studio 2008 生成 Designer.cs,例如不管怎样.aspx.designer.cs

    我在使用 Visual Studio 2005 使用网站技术生成的 Asp Net V2 0 中有一些 Web 表单 想要将它们导入到设置为 v3 5 Asp Net MVC 的 Visual Studio 2008 我在其中使用项目技术
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 如何终止会话或会话 ID (ASP.NET/C#)

    当用户单击注销按钮时 如何销毁会话 会话 名称 我正在 MSDN 上查看 ASP NET API Reference 它似乎没有太多信息 看来还是比较有限的 但我找不到 ASP NET 类等的任何其他页面 我努力了 Session Aban
  • 在javascript中访问隐藏字段值

    我的表单中有一个隐藏字段 我正在服务器上设置隐藏字段的值并尝试从 javascript 访问该值 我收到错误 无法获取属性 值 的值 对象为 null 或未定义 如果我查看源代码 则会设置隐藏字段值 并且隐藏字段的 ID 与我正在调用的 I
  • 控件更改时 ObjectDataSource 创建两次

    我将 ObjectDataSource 与 GridView 一起使用 并在代码隐藏中使用 OnObjectCreated 处理程序 如果我以编程方式更改 GridView 上的子控件值 则整个控件会在同一请求中再次进行数据绑定 如 OnO
  • ASP.net C#,采用不同参数类型的同名方法[重复]

    这个问题在这里已经有答案了 可能的重复 可以在 ASP Net MVC 中重载控制器方法吗 https stackoverflow com questions 436866 can you overload controller metho
  • Asp.net Identity 注销其他用户

    我正在使用 Asp net Identity 来验证用户身份 并尝试从管理端锁定任何用户 但是当我锁定任何在线用户时 它并没有注销 我读过很多关于我的问题的评论 但它们都不起作用 我尝试使用 UserManager UpdateSecuri
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • 服务器不支持 C# 中的安全连接

    我在下面的代码中收到错误 服务器不支持安全连接 SmtpClient smtp new SmtpClient MailMessage mail new MailMessage mail From new MailAddress gmail

随机推荐

  • 使 QTreeWidgetItem 在兄弟姐妹中独一无二

    有什么方法可以确保更新现有的QTreeWidgetItem或者插入一个新项目可确保该项目根据单列的值在其同级项目中是唯一的 我尝试过做这样的事情QTreeView和我自己的自定义模型 并已使其正常工作 但一些高级功能 例如通过拖放移动项目
  • 可选 isPresent 与 orElse(null)

    我正在将项目中的依赖项更新到 Spring 5 并受到编译错误的轰炸 其中方法定义findOne 已被替换为findById 现在返回一个Optional 如果我错了请纠正我 在重构时 我遇到了多种可以选择采用的方法 因此我希望获得一些关于
  • 如何将图像和文本添加到 QLabel

    我有一个带有 QLabel 的 QHBoxLayout 我试图在 QLabel 中获取图标和窗口标题文本 那可能吗 或者甚至将图标直接添加到 QHBoxLayout 以便放置在窗口标题文本之前 这是我的代码 class MyBar QWid
  • 如何将参数从 CDI 中的另一个类传递给注入的类?

    我是 CDI 新手 试图找到这个问题的解决方案 但是找不到任何解决方案 问题是假设我有一个正在注入的类 A 其中注入了一些值 toPass 现在我想将这个相同的值 toPass 传递给B类 B类是从A类注入的 public class A
  • 将索引(数字 ID)列添加到大型数据框[重复]

    这个问题在这里已经有答案了 我将大型 csv 文件读取到数据框中 csv 文件中的数据来自多个表示用户信息的网站 例如 这里是数据帧的结构 user id number of logins number of images web 001
  • 遇到 java.net.BindException:服务器客户端套接字应用程序上的地址已在使用(绑定失败)

    我在服务器客户端套接字应用程序上遇到 java net BindException 地址已在使用 绑定失败 我正在尝试使用 Youtube 教程作为参考来了解 Java 套接字 我的代码似乎与视频中的所有内容匹配 变量名称除外 但是 当尝试
  • 创建和更新 Zend_Search_Lucene 索引

    我正在使用 Zend Search Lucene 创建文章索引 以便可以在我的网站上搜索它们 每当管理员在管理区域中更新 创建 删除文章时 都会重建索引 config Zend Registry get config cache confi
  • 比较 Python 类型的类型

    我有一个函数接受另一个用类型提示注释的 Python 函数 annotations 我想使用这些提示在运行时进行一些类型检查 问题是来自输入模块的类型类似乎不太容易使用 没有 isinstance 没有 issubclass 所以 我想知道
  • backbone.js:调用 collection.reset() 是否也会删除模型?

    我在主干文档中读到调用collection reset 清除集合 我想知道它是否也会删除模型 或者它们是否继续存在于内存中 如果没有删除它们 是否有一种更简单的方法可以删除集合中的所有模型 而无需迭代模型并调用model remove 你可
  • Powershell 脚本可以在 Powershell 中运行,但不能在 VB.Net 中运行

    我有一个简单的 powershell 脚本来启用 Exchange 中名为 test ps1 的邮箱 这是脚本 添加 pssnapin microsoft exchange management powershell admin 启用邮箱
  • Typescript 的代码覆盖率 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们刚刚在 Typescript 中启动了一个项目 我们需要获取代码覆盖率数据 我们现有的 JavaS
  • 成功的 MySQL DELETE 返回什么?如何检查DELETE是否成功?

    使用 PHP 我尝试删除一条记录 但我想检查它是否成功 成功后是否返回任何内容DELETE FROM foo where bar stuff 或者 您知道其他方法来检查删除是否成功吗 或者我最好在删除它之前确保该行存在 如果可能的话 我试图
  • Kendo Grid:当行更改时如何从代码更新数据源

    这是我之前几篇关于更新剑道网格数据源的文章的延续 我想做的最后一件事是当用户转到新行时发生这种情况 感谢 Lars 迄今为止提供的令人印象深刻的帮助 我通过检测行更改 碰巧在指令中执行此操作 并回调网格控制器来执行此操作 在网格控制器中我在
  • WSL2 上的 Ubuntu 18.04:“登录失败:尚未授予用户在此计算机上请求的登录类型。”

    重新启动 Windows 计算机后 我在尝试打开 Ubuntu 18 04 WSL2 实例时收到此错误 Logon failure the user has not been granted the requested logon type
  • MongoDB 投影参数在 findOne() 中不起作用

    我试图在 findOne 上使用投影参数从文档 统计信息 中提取单个字段 但它似乎只是返回整个文档 我在 Node js 中使用版本 mongodb 3 4 1 这是文档结构 id 5e563015fa9a1a0134cac3cb user
  • javascript图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个不错的 JavaScript 图形库 它可以处理以下类型的图形 折线图 直方图 散点图 动态图表 我已经尝试过 Google
  • 防止伪元素自行断行

    我有一个链接样式 可以使用以下命令在链接末尾添加 SVG 箭头 after 问题是 当视口改变大小时 有时只有 SVG 会断线 我怎样才能设置它 以便 SVG 总是用最后一个单词来换行 a tag txtbtn font size 1 12
  • PHP预防xss

    Is htmlentitiesPHP 中防止 XSS 的最佳解决方案 我也想允许简单的标签 比如b i a and img 实现这一点的最佳解决方案是什么 我确实考虑过 bbcode 但发现如果没有正确实现我也会遇到 XSS 问题 我应该怎
  • 当我使用 document.execCommand("copy") 时,javascript 换行符不适用

    您好 我正在使用下面的代码构建一个字符串并复制它 但是在粘贴它时的输出中 换行符不适用 function copyToClipboardShipto var temp
  • 在 Orchard 中创建/编辑后清空内容项

    我正在使用在 Orchard 中创建 n to n 关系的指南 ocs orchardproject net Documentation Creating 1 n and n n relations 并进行一些细微的修改 虽然示例代码运行良