Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 生成视图而不执行控制器操作_C#_Asp.net_Asp.net Mvc_Razor_Asp.net Mvc Controller - Fatal编程技术网

C# 生成视图而不执行控制器操作

C# 生成视图而不执行控制器操作,c#,asp.net,asp.net-mvc,razor,asp.net-mvc-controller,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc Controller,在我的ASP.NETMVC项目中,我有一个控制器,一个操作只显示结果视图。此操作不获取任何参数,只返回CSHTML页面。此页不能是部分的 有人知道生成视图的更好方法吗?我的意思是,我可以在没有控制器操作的情况下生成视图吗 //编辑-示例代码 现在在我的UserPanelController中,我有一个动作更改设置 [HttpGet] public ActionResult ChangeSettings() { return View("Configuration"); } 因此,如果我

在我的ASP.NETMVC项目中,我有一个控制器,一个操作只显示结果视图。此操作不获取任何参数,只返回CSHTML页面。此页不能是部分的

有人知道生成视图的更好方法吗?我的意思是,我可以在没有控制器操作的情况下生成视图吗

//编辑-示例代码

现在在我的UserPanelController中,我有一个动作更改设置

[HttpGet]
public ActionResult ChangeSettings()
{
    return View("Configuration");
}
因此,如果我想获得配置视图,我必须向控制器发出请求,例如导航:

<nav>
     <div class="nav-wrapper">
       <a href="#" class="brand-logo">Logo</a>
       <ul id="nav-mobile" class="right hide-on-med-and-down">
            <li><a href="sass.html">Sass</a></li>
            <li><a href="badges.html">Components</a></li>
            <li><a href="@Url.Action("ChangeSettings","UserPanel")">Konrad</a></li>
       </ul>
     </div>
</nav>


我可以在没有控制器操作的情况下获取ConfigurationView吗

如果是静态内容,可以在项目中添加
.html
文件。网络服务器将为其提供服务

为了确保MVC路由不会干扰,您可以在路由中添加类似的内容:

routes.IgnoreRoute("{file}.html");

您可以通过调用以下方法自己渲染视图

 private static string RenderPartialViewToString(Controller controller, string viewName, object model)
    {

        controller.ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);

            var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return sw.ToString();
        }
    }
这将为您提供包含渲染视图的html字符串。我以前使用过它为电子邮件呈现HTML,其中电子邮件内容在用户之间发生了变化


希望这有帮助。

也许我来晚了一点,但您可能正在寻找的是:

 @{ Html.RenderPartial("_PartialViewName"); }

请注意,您也可以在视图中使用模型,方法是直接从调用局部模型的视图传递模型

您所说的“生成视图而不执行控制器操作”是什么意思?能否给出示例代码,并请澄清您的问题?第一句,结尾是“一个动作只是结果视图”不是英语,很难猜出它的意思。更多信息请参阅主帖子-抱歉没有示例如果您需要动态呈现视图,它必须通过MVC动作。但是在静态html文件中,我无法获得有关当前用户名的信息,确切地我描述的方法只能用于静态内容。否则,您必须在控制器中创建操作。如果该电子邮件模板没有控制器怎么办?