如何在不同页面上使用 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);
}