我想在DNN网站中添加新页面,该网站从数据库中填充两个国家/地区下拉列表。
请建议我们如何做到这一点?
答案 0 :(得分:0)
在这里,我将向您展示如何使用DNN模块创建动态页面。有关更多信息,请参阅this link。
答案 1 :(得分:0)
我有一篇博客文章,其中包含有关如何在DNN中完成此操作的代码示例。
CASCADING COUNTRY / STATE DROPDOWNS: A STUDY IN DOTNETNUKE 7 WEBAPI SERVICES AND AJAX
答案 2 :(得分:0)
Keval的解决方案可以快速而肮脏的解决方案,但对于更具可持续性的东西,我更喜欢将我的模块保留在除DNN之外的自己的解决方案中。然后,我使用project post build events
将所需的代码复制到bin和desktop模块文件夹。这使源控制更容易,并且更快地打开解决方案。
不同文件扩展名的构建脚本
xcopy "$(ProjectDir)*.ascx" C:\Webs\Properteez\DesktopModules\$(ProjectName)\*.ascx /S /C /Y /D
xcopy "$(ProjectDir)*.css" C:\Webs\Properteez\DesktopModules\$(ProjectName)\*.css /S /C /Y /D
xcopy "$(ProjectDir)*.txt" C:\Webs\Properteez\DesktopModules\$(ProjectName)\*.txt /S /C /Y /D
xcopy "$(ProjectDir)App_LocalResources\*.resx" C:\Webs\Properteez\DesktopModules\$(ProjectName)\App_LocalResources\*.resx /S /C /Y /D
xcopy "$(ProjectDir)Styles\*.css" C:\Webs\Properteez\DesktopModules\$(ProjectName)\Styles\*.css /S /C /Y /D
xcopy "$(ProjectDir)Scripts\*.js" C:\Webs\Properteez\DesktopModules\$(ProjectName)\Scripts\*.js /S /C /Y /D
xcopy "$(ProjectDir)Images\*.*" C:\Webs\Properteez\DesktopModules\$(ProjectName)\Images\*.* /S /C /Y /D
xcopy "$(TargetDir)$(TargetFileName)" C:\Webs\Properteez\bin /C /Y /Q /D
此外,
从数据库中填充国家和州的两个下拉列表
与DB通信可以通过" DNN方式"与PetaPoco合作。
模型示例(这需要直接映射到您的数据库表):
#region Usings
using System;
using DotNetNuke.ComponentModel.DataAnnotations;
using DotNetNuke.Common.Utilities;
#endregion
namespace Properteez.Data.Entities
{
[TableName("Sync_Property")]
[PrimaryKey("PropertyId", "PropertyId")]
public class Property
{
#region Properties
public int PropertyId { get; set; }
public string Name { get; set; }
public string ShortDesc { get; set; }
public int UserId { get; set; }
public bool IsDeleted { get; set; }
// You can use the [IgnoreColumn] attribute if a property does not map to a DB field
}
}
存储库方法示例:
public static Property Get(int id)
{
Property item;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
item = rep.GetById(id);
}
return item;
}
public static List<Property> GetAllSinceLastSync(DateTime lastSyncDate)
{
List<Property> items;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
items = rep.Get()
// Filter list to valid properteez that have been added or changed since last sync
.Where(p => (!p.IsDeleted && !p.IsSold) && p.LastModifiedOnDate >= lastSyncDate)
.ToList();
}
return items;
}
public static List<Property> GetAll()
{
List<Property> items;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
items = rep.Get().ToList();
}
return items;
}
public static int Create(Property item)
{
item.CreatedOnDate = DateTime.Now;
item.LastModifiedOnDate = DateTime.Now;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
rep.Insert(item);
}
return item.PropertyId;
}
public static void Update(Property item)
{
item.LastModifiedOnDate = DateTime.Now;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
rep.Update(item);
}
}
public static void Delete(Property item)
{
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Property>();
rep.Delete(item);
}
}
<强>调试强>
您可以通过构建(将.dlls复制到DNN实例的bin文件夹)来调试应用程序,转到Debug&gt; Attach to process并选择&#34; W3wp&#34;过程
注意,您需要以管理员身份运行Visual Studio。