Asp.net mvc 在不同控制器之间共享视图
在不同的控制器之间共享视图(使用视图/共享文件夹)是一个好主意吗?Asp.net mvc 在不同控制器之间共享视图,asp.net-mvc,Asp.net Mvc,在不同的控制器之间共享视图(使用视图/共享文件夹)是一个好主意吗?我正在创建我的第一个MVC应用程序,它需要一些彼此相似的数据。它们“解释”了不同的东西(因此将存储在不同的表中),但它们都有Id、Name和状态。因此,我可以使用不同的控制器,然后使用相同的视图在下拉列表中显示数据,允许用户通过文本框选择一个以编辑或添加新的控制器。显然,我失去了拥有强类型ViewPage数据的能力,但除此之外,这是一种很好的方法,还是我最好为每个控制器创建一个视图来使用?就我个人而言,如果视图足够通用,可以用于多
我正在创建我的第一个MVC应用程序,它需要一些彼此相似的数据。它们“解释”了不同的东西(因此将存储在不同的表中),但它们都有
Id
、Name
和状态
。因此,我可以使用不同的控制器,然后使用相同的视图在下拉列表中显示数据,允许用户通过文本框选择一个以编辑或添加新的控制器。显然,我失去了拥有强类型ViewPage数据的能力,但除此之外,这是一种很好的方法,还是我最好为每个控制器创建一个视图来使用?就我个人而言,如果视图足够通用,可以用于多种场景,那么我也会这样使用它。干 如果您创建自己的中间类来处理视图数据,那么在此场景中仍然可以使用强类型ViewPage 为视图页定义自定义类:
public class MyCustomViewData
{
public int Id {get; set;}
public string Name {get; set;}
public int Status {get; set;}
}
从您的页面中:
<% Html.RenderPartial("MyCustomView", new MyCustomViewData ()
{
Id = ViewData.Model.SomeIdField,
Name = ViewData.Model.SomeNameField,
Status = ViewData.Model.SomeStatusField
});
在我们的项目中,我们将大多数视图与控制器隔离,并且不重用其中的许多视图,但我们确实使用了大量用户控件和部分视图,这样我们就不会重复自己的操作。这也让我们可以将所有内容都保持强类型化,也许这适合您的场景?如果您有一个通用的页面格式,比如一个表,那么您可以在共享文件夹中创建一个通用视图。此ViewData必须包含列信息、数据以及有关任何链接的一些信息
细节并不难,如果有很多类似的页面,可以节省时间。谢谢DaRKoN。这正是我所想的,这就是为什么我开始走这条路,但后来我开始担心,也许我错过了一些东西,这会给我带来麻烦!多亏了Todd,我特别喜欢控制器中的那个,如果我继续分享这个观点,那么我肯定会实现它。
public ActionResult Foo()
{
// get your model data
return View("MyCustomView", new MyCustomViewData ()
{
Id = model.SomeIdField,
Name = model.SomeNameField,
Status = model.SomeStatusField
});
}