在控制器内切换视图模型
Switching viewmodel inside controller
告诉我,我有多个类别,例如主板、机箱和驱动器。他们每个人都有自己的视图模型,比如 MotherboardsView、CasesView 和 DrivesView。和视图模型 - MotherboardsViewModel、CasesViewModel 和 DrivesModel。
我有控制器,我想根据类别切换视图模型。
抽象代码看起来像这样:
//GET Action
public ActionResult Create(string Category)
{
switch (Category)
{
case "Motherboards":
var viewModel = new MotherboardsViewModel { };
break;
case "Cases":
var viewModel = new CasesViewModel { };
break;
default:
var viewModel = new DrivesViewModel { };
break;
}
//Here i use switched viewmodel to change some values, like:
viewModel.Name = GetRandomName();
...
//And i return view and viewmodel
return View(Category + "View", viewmodel)
}
有可能吗,我该如何解决这个问题?
这是一个基本的编程概念,与 MVC 无关。变量必须在使用它的代码 "scope" 内声明。您的 viewmodel
是在 switch 语句中声明的,在该代码块之外是看不到的。试试这个声明 viewmodel
这样它就可以被方法中的任何代码访问。注意 var
已被删除。
//GET Action
public ActionResult Create(string Category)
{
object viewmodel = null;
switch (Category)
{
case "Motherboards":
MotherboardviewModel = new MotherboardsViewModel { };
//Here i use switched viewmodel to change some values, like:
MotherboardviewModel.Name = GetRandomName();
...
viewModel = MotherboardviewModel;
break;
case "Cases":
CaseviewModel = new CasesViewModel { };
//Here i use switched viewmodel to change some values, like:
CaseviewModel.Name = GetRandomName();
...
viewModel = CasesviewModel;
break;
default:
DriveviewModel = new DrivesViewModel { };
//Here i use switched viewmodel to change some values, like:
DriveviewModel.Name = GetRandomName();
...
viewModel = DriveviewModel;
break;
}
//And i return view and viewmodel
return View(Category + "View", viewmodel)
}
告诉我,我有多个类别,例如主板、机箱和驱动器。他们每个人都有自己的视图模型,比如 MotherboardsView、CasesView 和 DrivesView。和视图模型 - MotherboardsViewModel、CasesViewModel 和 DrivesModel。 我有控制器,我想根据类别切换视图模型。 抽象代码看起来像这样:
//GET Action public ActionResult Create(string Category) { switch (Category) { case "Motherboards": var viewModel = new MotherboardsViewModel { }; break; case "Cases": var viewModel = new CasesViewModel { }; break; default: var viewModel = new DrivesViewModel { }; break; } //Here i use switched viewmodel to change some values, like: viewModel.Name = GetRandomName(); ... //And i return view and viewmodel return View(Category + "View", viewmodel) }
有可能吗,我该如何解决这个问题?
这是一个基本的编程概念,与 MVC 无关。变量必须在使用它的代码 "scope" 内声明。您的 viewmodel
是在 switch 语句中声明的,在该代码块之外是看不到的。试试这个声明 viewmodel
这样它就可以被方法中的任何代码访问。注意 var
已被删除。
//GET Action
public ActionResult Create(string Category)
{
object viewmodel = null;
switch (Category)
{
case "Motherboards":
MotherboardviewModel = new MotherboardsViewModel { };
//Here i use switched viewmodel to change some values, like:
MotherboardviewModel.Name = GetRandomName();
...
viewModel = MotherboardviewModel;
break;
case "Cases":
CaseviewModel = new CasesViewModel { };
//Here i use switched viewmodel to change some values, like:
CaseviewModel.Name = GetRandomName();
...
viewModel = CasesviewModel;
break;
default:
DriveviewModel = new DrivesViewModel { };
//Here i use switched viewmodel to change some values, like:
DriveviewModel.Name = GetRandomName();
...
viewModel = DriveviewModel;
break;
}
//And i return view and viewmodel
return View(Category + "View", viewmodel)
}