Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# Net Mvc-如何拥有一个;控制员;众目睽睽_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# Net Mvc-如何拥有一个;控制员;众目睽睽

C# Net Mvc-如何拥有一个;控制员;众目睽睽,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我在我的_Layout.cshtml中有一个名为“_header.cshtml”的标题的共享视图 我想显示数据库中的文本和图像,所以我需要我的控制器进入数据库并将其返回到_Header.cshtml 我怎样才能做到这一点,因为调用的控制器在用户进入的每个页面上总是不同的。有没有办法让控制器具有共享视图 这是_Layout.cshtml @Html.Partial(“_头”) @Html.Partial(“\u culturechoser”) @Html.Partial(“\u lognP

我在我的_Layout.cshtml中有一个名为“_header.cshtml”的标题的共享视图

我想显示数据库中的文本和图像,所以我需要我的控制器进入数据库并将其返回到_Header.cshtml

我怎样才能做到这一点,因为调用的控制器在用户进入的每个页面上总是不同的。有没有办法让控制器具有共享视图

这是_Layout.cshtml


@Html.Partial(“_头”)
@Html.Partial(“\u culturechoser”)

@Html.Partial(“\u lognPartial”) @Html.Partial(“\u menuppartial”) @RenderBody()

在控件操作中,可以指定视图的名称:

public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return View("~/Views/Shared/_Header.cshtml", model);
    }
}
现在,在您的
\u Layout.cshtml
而不是
@Html.Partial(“\u Header”)
中执行以下操作:

@Html.Action("Header", "Menu")

在一个控制器中创建一个动作来呈现标题视图,然后在_Layout.cshtml中调用@Html.RenderAction(“标题”)


如果需要,您还可以将模型传递到RenderAction方法。

虽然提供的RenderAction方法运行良好,但我最近使用另一种使用IoC的方法在博客中介绍了这个主题:


。。。1年后,我只想给迪米特洛夫的答案增加一件事。您可以使控制器更干净一些:

public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return Partial("_Header", model);
    }
}

我希望你问的问题是。。。。 我们可以为共享布局视图提供一个控制器吗

简单的答案是否定的


为了实现这一目标,您必须为相同的目的创建一个局部视图,并将其放入共享布局中。通过这种方式,您可以实现您的目标

我在问题中添加了_Layout.cshtml。它不是一次点击,它在网站上无处不在。@Daok,点击是什么意思?您可以在布局中使用
@Html.Action
助手方法,该方法将调用相应控制器上的子操作。这比简单的
Html.Partial
更强大,因为在这里,您可以为站点的这一部分定义一个单独的控制器/模型和视图,该控制器/模型和视图到处重复,并且独立于主控制器。您可以查看以下关于子操作的博文:谢谢,我仍然需要学习MVC:P我现在有一个错误:执行处理程序'System.Web.MVC.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。现在它工作了,我返回了一个视图(),而不是一个PartialView()@Darinditrov我遇到了这个错误:{堆栈不足,无法继续安全执行程序。这可能是由于调用堆栈上的函数太多或堆栈上的函数使用了太多的堆栈空间},我能做什么?你救了我,只是我认为它必须是{return PartialView(“_Header”,model);}我没有找到分部方法,我错了吗?
public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return Partial("_Header", model);
    }
}