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

时间:2011-05-17 08:23:46

标签: asp.net-mvc asp.net-mvc-3

'添加'和'修改'视图通常或多或少相同。如何重复使用视图,以便Foos/AddFoos/Edit/[Id]都使用它?这些行为会是什么样的?

由于

3 个答案:

答案 0 :(得分:25)

在调用{/ 1}}方法时,只需指定视图名称,如

View()

您的视图必须处理public ViewResult Add() { //... return View("Foo"); } public ViewResult Edit(int id) { //... var model = repository.get(id); return View("Foo", model); } 操作的空/空模型值,或者您可以使用默认值填充模型。

答案 1 :(得分:7)

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

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

create your template之后,您的添加视图看起来像(Razor):

@model Models.Foo    
<h2>Add</h2>
<p>
@Html.EditorFor(model => model)  // equivalent to EditorForModel()
</p>

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

@model Models.Foo    
<h2>Edit</h2>
<p>
@Html.EditorFor(model => model)  // equivalent to EditorForModel()
</p>

答案 2 :(得分:-2)

我会使用jQuery ajax。单击“添加”或“编辑”将调用服务操作,该操作将返回相同的PartialView(如果要重复使用它)。 然后,在ajax调用的成功函数中,您只需将返回的html(从该PartialView)放入页面的某个部分(或弹出窗口)。

很干净,没有页面重新加载...