如何在不同的页面上使用ASP.NET MVC 3 DNN模块,但传递不同的参数?

时间:2016-05-13 11:47:15

标签: dotnetnuke

如何在不同页面上使用ASP.NET MVC 3 DNN模块,但传递不同的参数?我的要求是使用ASP.NET MVC开发一个DNN模块,该模块根据省份列出城市。在另一页上,我需要根据部门列出所有讲师。我不想设计2个模块,这些模块只根据传递的参数而有所不同。

1 个答案:

答案 0 :(得分:0)

我这样做的方法是使用模块设置,允许内容管理员使用您的模块,但根据模块设置的值在不同页面上具有不同的行为。要在MVC模块中查看模块设置的工作实现,请下载我的GitHub Restaurant Menu MVC project

例如,如果您的设置被称为“数据源”,并且您允许用户从设置模块视图中的数据源选项下拉列表中选择(即:“区域”,“讲师”等) ,这将更新模块实例的设置值。

然后在主视图控制器中,您可以获取该设置并更改模型以使用正确的数据源。您的视图通常会使用该数据源来呈现级联的下拉列表(或者您希望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);
}