ASP.NET MVC:通过两个控制器操作重用View

Dav*_*vid 16 asp.net-mvc asp.net-mvc-3

"添加"和"修改"视图通常或多或少相同.我如何重新使用视图,以便Foos/AddFoos/Edit/[Id]两个使用它?这些动作会是什么样的?

谢谢

Dav*_*enn 25

只需在调用View()方法时指定视图名称即可

public ViewResult Add() {
  //...
  return View("Foo");
}

public ViewResult Edit(int id) {
  //...
  var model = repository.get(id);
  return View("Foo", model);
}
Run Code Online (Sandbox Code Playgroud)

您的视图必须处理操作的空/空模型值,Add或者您可以使用默认值填充模型.


ryc*_*ell 7

您可能需要考虑使用编辑器模板而不是重用相同的视图.编辑器模板是用于编辑和/或插入数据的部分视图.

这需要单独的视图,但代码将是最小的.大部分代码都位于模板中,您可以将其重复用于"添加"和"编辑"操作.

您以后创建模板,您添加视图看起来像(剃刀):

@model Models.Foo    
<h2>Add</h2>
<p>
@Html.EditorFor(model => model)  // equivalent to EditorForModel()
</p>
Run Code Online (Sandbox Code Playgroud)

您的编辑视图将如下所示:

@model Models.Foo    
<h2>Edit</h2>
<p>
@Html.EditorFor(model => model)  // equivalent to EditorForModel()
</p>
Run Code Online (Sandbox Code Playgroud)