'添加'和'修改'视图通常或多或少相同。如何重复使用视图,以便Foos/Add
和Foos/Edit/[Id]
都使用它?这些行为会是什么样的?
由于
答案 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)放入页面的某个部分(或弹出窗口)。
很干净,没有页面重新加载...