我对查看模型比较新,我遇到了一些使用它们的问题.这是一种情况,我想知道最佳做法是什么......
我将视图所需的所有信息都放入视图模型中.这是一个例子 - 请原谅任何错误,这是我的头顶编码.
public ActionResult Edit(int id)
{
var project = ProjectService.GetProject(id);
if (project == null)
// Something about not found, possibly a redirect to 404.
var model = new ProjectEdit();
model.MapFrom(project); // Extension method using AutoMapper.
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
如果屏幕只允许编辑一个或两个字段,当视图模型返回时,它会丢失相当多的数据(应该是这样).
[HttpPost]
public ActionResult Edit(int id, ProjectEdit model)
{
var project = ProjectService.GetProject(id);
if (project == null)
// Something about not found, possibly a redirect to 404.
try
{
if (!ModelState.IsValid)
return View(model) // Won't work, view model is …Run Code Online (Sandbox Code Playgroud) 每个视图或每个控制器操作一个ViewModel是一个更好的主意吗?
例:
public ProjectController : Controller
{
public ActionResult Edit(int id)
{
var project = ...;
return View(new ProjectEditViewModel(project));
}
[HttpPost]
public ActionResult Edit(ProjectEditViewModel model)
{
}
**OR**
[HttpPost]
public ActionResult Edit(Project model)
{
}
[HttpPost]
public ActionResult Edit(ProjectEditPostViewModel model)
{
}
}
Run Code Online (Sandbox Code Playgroud)
以下是三个选项,哪个最好?
我想知道在ASP.NET MVC中填充常用的下拉列表时最佳做法是什么.例如,我有一个国家和州选择,在我的应用程序中经常使用.对于我希望包含这样一个下拉列表的每个视图来说,填充viewmodel并从我的控制器绑定到该viewmodel似乎很脏.
在这种情况下,人们如何填充他们的下拉列表? - 这个烤制的自定义基类?助手班等?
提前致谢,
J.P