2008-12-09 129 views
2

在不同的控制器之间共享视图(使用Views/Shared文件夹)是一个好主意吗?我正在创建我的第一个MVC应用程序,它需要一些相互类似的数据。他们“解释”不同的事物(因此将存储在不同的表格中),但他们都有一个ID,名称和状态。因此,我可以使用不同的控制器,然后使用相同的视图在下拉列表中显示数据,允许用户选择一个编辑或通过文本框添加一个新的。显然,我失去了强类型化ViewPage数据的能力,但除此之外,这会被认为是一个好办法,或者我最好为每个控制器创建一个View来使用它?共享视图

回答

1

与我们的项目,我们隔离大多数的对控制器的视图并不重用其中的许多视图,但我们确实使用了大量的用户控件和局部视图这样我们就不会重复自己。这可以让我们保留所有强类型的东西,也许它可能适合您的情况?

1

就个人而言,如果视图的通用性足以用于多个场景,那么我会这样使用它。干!

+0

谢谢DaRKoN_。我在想什么,这就是为什么我开始走这条路,但后来担心我可能错过了一些会让我陷入困境的东西! – dave 2008-12-09 04:41:06

1

如果您创建自己的中间类来处理视图数据,那么您仍然可以在此场景中使用强类型的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 
}); 

或从控制器

public ActionResult Foo() 
{ 
    // get your model data 

    return View("MyCustomView", new MyCustomViewData() 
    { 
     Id = model.SomeIdField, 
     Name = model.SomeNameField, 
     Status = model.SomeStatusField 
    }); 
} 
+0

感谢托德,我特别喜欢来自控制器的人,如果我继续分享观点,那么肯定会实现这一点。 – dave 2008-12-10 00:16:54

0

如果你有一个通用的页面格式,说一个表,那么你可以在共​​享文件夹中创建一个通用视图。此ViewData必须包含列信息以及数据,以及有关任何链接的一些信息。

细节并不难,如果有很多类似的页面,它可以节省时间。