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