2

我正在尝试为 nopCommerce v2.20 创建一个插件,该插件允许用户通过描述要求并附加任何相关文件来请求商品和服务的报价。

我已经开始使用http://blog.csharpwebdeveloper.com/2011/09/10/writing-a-plugin-for-nopcommerce-2-x/作为指南,到目前为止这非常好。我的项目与博客文章中的项目几乎相同,所以我只会添加我认为需要的代码片段,所以如果我遗漏了任何重要的内容,请让我扩展并提供详细信息。

现在我想添加一个工具来使用 uploadify 上传多个文件,并根据现有代码决定我应该为附件创建一个 EditorTemplate。

我的问题是,当我使用以下代码行获取模板时,我无法弄清楚如何以 MVC 框架可以定位的方式设置模板。

@Html.EditorFor(m => m.Attachment)

在我的模型中,我使用 Attachment 属性上的 UIHintAttribute("Attachments") 来识别没有明显效果的模板。

我在“Views”文件夹下创建了一个名为“EditorTemplates”的文件夹,并添加了一个名为“Attachments.cshtml”的文件,其中构建操作设置为“Embedded Resource”,内容如下:

@model int
@using Nop.Core;
@{
    var randomNumber = CommonHelper.GenerateRandomInteger();
    var clientId = "download" + randomNumber;
    var downloadService = EngineContext.Current.Resolve();
    var download = downloadService.GetDownloadById(Model);
}
<div>This is a download control @string.Format("randomNumber = {0}, clientId = {1}, download = {2}", randomNumber, clientId, download);</div>

一旦我可以让 MVC 框架解析其位置,我打算实现该模板。

那么是否可以在插件中拥有一个编辑器模板(与主项目分开的类库),如果是这样,我需要做什么才能使 MVC 框架解析我的模板位置?

我还想补充一点,我对 MVC、Razor 和 nopCommerce 还是很陌生,如果我错过了一些明显的东西,请提前道歉。

作为一个方面,你能否为我的问题建议一个更好的标题,因为 stackoverflow 告诉我它看起来很主观?

谢谢

4

1 回答 1

3

如果您尝试提供没有预编译的编辑器模板(这可能是进入一些更高级场景之前的最佳方式),您需要将 BuildAction 设置为“Content”,而不是“EmbeddedResource”。

另外,请确保您的编辑器模板位于以下目录结构之一中(您提到它位于“视图”下,这是不正确的):

  • /Views/{ControllerName}/EditorTemplates/Attachments.cshtml
  • /Views/Shared/EditorTemplates/Attachments.cshtml
  • /Areas/{AreaName}/Views/{ControllerName}/EditorTemplates/Attachments.cshtml
  • /Areas/{AreaName}/Views/Shared/EditorTemplates/Attachments.cshtml

如果您确实想将模板作为单独库的一部分嵌入,我建议您查看Chris Van De Steeg 的这篇文章

于 2011-11-02T21:17:53.427 回答