Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在不同控制器之间共享视图_Asp.net Mvc - Fatal编程技术网

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
    });
}