如何在不同页面上使用 ASP.NET MVC 3 DNN 模块但传递不同的参数?
How do I use an ASP.NET MVC 3 DNN Module on different pages but passing different parameters?
如何在不同的页面上使用 ASP.NET MVC 3 DNN 模块但传递不同的参数?我的要求是使用 ASP.NET MVC 开发一个 DNN 模块,该模块根据省份列出城市。在另一页上,我需要列出基于部门的所有讲师。我不想设计 2 个只根据传递的参数而变化的模块。
我这样做的方法是使用允许内容管理员使用您的模块的模块设置,但根据模块设置的值在不同的页面上有不同的行为。要查看 MVC 模块中模块设置的有效实现,请下载我的 GitHub Restaurant Menu MVC project.
例如,如果您的设置名为 "Data Source",并且您允许用户从数据源选项下拉列表中 select(即:"Regions"、"Lecturers", etc) 在你的设置模块视图中,这将更新你的模块实例的设置值。
然后在您的主视图控制器中,您可以获得该设置并更改模型以使用正确的数据源。您的视图通常会使用该数据源来呈现一组级联的下拉列表(或者您希望 UI 呈现层次结构数据)。
这是一个粗略的例子:
public ActionResult Index()
{
string dataSrcSetting = "region";
if (ModuleContext.Settings.ContainsKey("Data_Source"))
{
dataSrcSetting = ModuleContext.Settings["Data_Source"].ToString();
}
// Get model
var model = new HierarchyDataModel();
if (dataSrcSetting.Equals("region"))
{
model.ParentData = businessLogic.getCountries();
model.ChildData = businessLogic.getRegions();
}
else if (dataSrcSetting.Equals("lecturer"))
{
model.ParentData = businessLogic.getDepartments();
model.ChildData = businessLogic.getLecturers();
}
return View(model);
}
如何在不同的页面上使用 ASP.NET MVC 3 DNN 模块但传递不同的参数?我的要求是使用 ASP.NET MVC 开发一个 DNN 模块,该模块根据省份列出城市。在另一页上,我需要列出基于部门的所有讲师。我不想设计 2 个只根据传递的参数而变化的模块。
我这样做的方法是使用允许内容管理员使用您的模块的模块设置,但根据模块设置的值在不同的页面上有不同的行为。要查看 MVC 模块中模块设置的有效实现,请下载我的 GitHub Restaurant Menu MVC project.
例如,如果您的设置名为 "Data Source",并且您允许用户从数据源选项下拉列表中 select(即:"Regions"、"Lecturers", etc) 在你的设置模块视图中,这将更新你的模块实例的设置值。
然后在您的主视图控制器中,您可以获得该设置并更改模型以使用正确的数据源。您的视图通常会使用该数据源来呈现一组级联的下拉列表(或者您希望 UI 呈现层次结构数据)。
这是一个粗略的例子:
public ActionResult Index()
{
string dataSrcSetting = "region";
if (ModuleContext.Settings.ContainsKey("Data_Source"))
{
dataSrcSetting = ModuleContext.Settings["Data_Source"].ToString();
}
// Get model
var model = new HierarchyDataModel();
if (dataSrcSetting.Equals("region"))
{
model.ParentData = businessLogic.getCountries();
model.ChildData = businessLogic.getRegions();
}
else if (dataSrcSetting.Equals("lecturer"))
{
model.ParentData = businessLogic.getDepartments();
model.ChildData = businessLogic.getLecturers();
}
return View(model);
}