标签: renderaction

Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction

在ASP.NET MVC中,有什么区别:

  • Html.PartialHtml.RenderPartial
  • Html.ActionHtml.RenderAction

.net asp.net-mvc renderpartial partial-views renderaction

1013
推荐指数
12
解决办法
56万
查看次数

在视图中执行处理程序的子请求时出错

我有一个MVC 4视图,我在其中呈现以下操作

@{
    Html.RenderAction("Index", "Logo");
    Html.RenderAction("Index", "MainMenu");
}
Run Code Online (Sandbox Code Playgroud)

我的视图上有一个表格,填写并发布到控制器.在控制器中,我执行一些任务,然后将模型发送回我的视图

[HttpPost]
public ActionResult Index(ManageAdministratorModel manageAdministratorModel)
{
     // I save some of the fields to the database here.
     return View(manageAdministratorModel);
}
Run Code Online (Sandbox Code Playgroud)

当我被重定向到视图时,我收到以下错误

执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错.

在这条线上

Html.RenderAction("Index", "Logo");
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

c# asp.net-mvc renderaction asp.net-mvc-4

29
推荐指数
3
解决办法
8万
查看次数

MVC5 Html.RenderAction与不同的控制器

我从MVC5开始,并从MVC5入门创建了第一个项目.

现在尝试使用Partial Rendering并在MoviesController中添加一个方法,如下所示

[ChildActionOnly]
public ActionResult PriceRange()
{
   var maxprice = db.Movies.Max(m => m.Price);
   var minprice = db.Movies.Min(m => m.Price);
   ViewBag.MaxPrice = maxprice;
   ViewBag.MinPrice = minprice;
   return PartialView();
}
Run Code Online (Sandbox Code Playgroud)

它将电影集合中的最小和最大价格设置为稍后在视图中显示的ViewBag.我试图在不同的视图上呈现它.

首先,我尝试将其渲染Views/Movies/Index.cshtml如下

@{Html.RenderAction("PriceRange");}
Run Code Online (Sandbox Code Playgroud)

它在那里运行良好,结果显示正确,因为它正在使用MoviesController,方法PriceRange定义的同一个类.

然后我尝试Views/Hello/Index.cshtml使用HelloWorldController以下代码渲染它(此视图正在使用)(首先传递Action名称然后传递Controller名称)

@{Html.RenderAction("PriceRange", "MoviesController");}
Run Code Online (Sandbox Code Playgroud)

这里给出了运行时错误

未找到路径'/ HelloWorld/Index'的控制器或未实现IController.

这是来自Views/Hello/Index.cshtml的完整代码

@{
    ViewBag.Title = "Movie List";
}
<h2>My Movie List</h2>
<p>Hello from our view template</p>
@{Html.RenderAction("PriceRange", "MoviesController");}
Run Code Online (Sandbox Code Playgroud)

我通过Google找到了一些例子,他们以相同的方式调用RenderAction助手,首先传递Action名称然后传递Controller名称.

我无法理解我在这里做错了什么.有人可以指出吗?

asp.net-mvc renderaction

25
推荐指数
1
解决办法
7万
查看次数

ASP.NET Core中Html.RenderAction的等价物

我试图从我的小型ASP.NET MVC 4应用程序切换到ASP.NET Core.

在我的MVC 4应用程序中,我有一个使用RenderSection的布局文件:

@RenderSection("xyz", required: false)
Run Code Online (Sandbox Code Playgroud)

然后,在我的索引文件中,我有:

@section xyz{
        @{Html.RenderAction("abc");}
    }
Run Code Online (Sandbox Code Playgroud)

所以,我从Index调用控制器动作方法abc().方法abc()传递模型对象并返回具有该模型的局部视图.我无法使用RenderPartial,因为它需要传递模型.

现在,在ASP.NET Core中,我没有RenderAction()方法.

我的问题是:如何从我的索引文件中调用控制器操作方法?是否有任何其他HTML助手(虽然我没有看到任何)?

.

asp.net asp.net-mvc renderaction asp.net-core

17
推荐指数
3
解决办法
2万
查看次数

Asp.Net MVC2 RenderAction改变页面mime类型?

Html.RenderAction如果子操作的类型与父操作的类型不同,调用Asp.Net MVC2应用程序似乎可以改变页面的mime类型.

下面的代码(在MVC2 RTM中测试),对我来说似乎很合理,application/json在调用时会返回类型的结果Home/Index.浏览器不会显示页面,而是会barf并询问您是否要下载它.

我的问题:我错过了什么吗?这是一个错误吗?如果是这样,最好的解决方法是什么?

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData[ "Message" ] = "Welcome to ASP.NET MVC!";

        return View();
    }

    [ChildActionOnly]
    public JsonResult States()
    {
        string[] states = new[] { "AK", "AL", "AR", "AZ", };

        return Json(states, JsonRequestBehavior.AllowGet);
    }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<script>
  var states = <% Html.RenderAction("States"); %>;
</script>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc renderaction mime-types asp.net-mvc-2

13
推荐指数
2
解决办法
2332
查看次数

如何让Html.RenderAction在帖子上调用Get方法?

在Post上渲染视图后,在视图内调用RenderAction将调用Post方法.有没有办法指定我想调用Get方法而不是Post?

asp.net asp.net-mvc renderaction

8
推荐指数
1
解决办法
2576
查看次数

ASP MVC2中部分缓存的当前做法是什么?

我的网站页面由两种内容组成.第一个是用户之间的变量,但对于所有页面都是常量.第二个是跨用户不变的,但在页面之间是可变的.这是一种常见的布局.将输出缓存应用于此类内容的最佳方法是什么?

据我了解,Html.Substitute助手与MVC2渲染管道不兼容,消除了旧的圆环缓存方式.

对每个页面使用VaryByParam ="user"的正常输出缓存?

特异性水平会降低输出缓存的价值.同一用户不太可能在缓存输出的生命周期内多次查看同一页面.

使用备用OutputCache子系统

互联网上有几次尝试,它们修改OutputCache属性并渲染子系统以支持替换.我发现的最好的就是这里.

但是,我发现的各种片段似乎都是非正式的实现,并且得不到很好的支持.另外,我倾向于怀疑如果将替换添加回MVC2管道那么容易,那就完成了.

从几个单独缓存的子操作中编写最终页面

action方法不会使用OutputCache属性进行标记,并且会返回一个包含多个Html.RenderAction调用的视图,这些调用将独立地引入缓存的内容.除了使用稍微重量级的含义之外RenderAction,它还会增加额外的间接层和代码味道.

您在MVC2中独立编写缓存内容的经历是什么?什么运作良好,什么没有?

outputcache partial-views donut-caching renderaction asp.net-mvc-2

8
推荐指数
1
解决办法
802
查看次数

Asp.Net MVC 3 - @ Html.Action不会呈现/返回任何HTML

我今天一直在将一个相当新的项目从ViewPages搬到Razor,一切似乎都很顺利.除了我试图使用Html.Action呈现用户控件,它不会呈现任何东西.

所以我有一个在Home/Index.cshtml中引用的Shared/_Layout.cshtml文件

Index.cshtml具有以下内容:

<article>

@Html.Action("LatestBlogsMainPanelWidget", "Blogs")

...

</article>
Run Code Online (Sandbox Code Playgroud)

我把陷阱放在BlogsController中,所以我知道这是被请求的.我也知道正在返回一个模型,视图引擎正在找到LatestBlogsMainPanelWidget,甚至正在运行一些伪Razor语法代码:@ {var s ="hello"; }

但是这个文件中的普通html没有进入浏览器.我也尝试了其他(以前工作)的部分,它们也不会出现(页面上的查看源确认它不存在).

我也试过替换@ {Html.RenderAction(...); } 没有成功.@ Html.Action的任何一侧都出现HTML,所以我知道Index.cshtml正在显示.

更诡异的_layout文件也有Html.Action命令和他们似乎罚款.

我真的不确定还有什么要检查,或者如何确认管道正在获取HTML.任何人都可以帮忙吗?

谢谢!

partials renderaction razor asp.net-mvc-3

7
推荐指数
3
解决办法
2万
查看次数

我应该使用@html.renderpartial还是@html.renderaction

我正试着带上我的菜单.

在我的_Layout.cshtml页面中

<div class="wrapper">
                <!-- Navigation -->

                  @Html.RenderAction("Navigation", "Nav")
Run Code Online (Sandbox Code Playgroud)

导航控制器看起来像这样

public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return View(pages);
}
Run Code Online (Sandbox Code Playgroud)

导航视图看起来像这样

@model IEnumerable<Site.Domain.Entities.Page>
@{
    Layout = null;
    List<Site.Domain.Entities.Page> pages = new List<Site.Domain.Entities.Page>();

    foreach(var page in Model)
    {
        pages.Add(page);
    }
}

@foreach (var link in Model)
{
    if (link.ParentPage == "Home")
    { 
    <li>@link.PageTitle</li>
    <ul>
        @foreach (var subLink in pages)
        {
            if (subLink.ParentPage == link.PageTitle)
            { 
            <li>@subLink.PageTitle</li>
            }
        }
    </ul> 

    }
}
Run Code Online (Sandbox Code Playgroud)

当我去.../nav/navigation时,视图工作正常

我想要做的是将它带入我的_Layout页面,以便我可以将它用作我的菜单.

我继续使用@ Html.RenderAction("导航","导航")出错

错误说"'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配'有一些无效的参数"

我应该使用它作为部分吗?最好的方法是什么?谢谢你的建议!

c# asp.net asp.net-mvc partial-views renderaction

7
推荐指数
1
解决办法
1万
查看次数

RenderAction差异

为什么这段代码是正确的:

 @{
   Html.RenderAction("PostImagesForPost", "BlogPost", new { id = Model.ID });
  }
Run Code Online (Sandbox Code Playgroud)

而这段代码

 @Html.RenderAction("PostImagesForPost", "BlogPost", new { id = Model.ID })
Run Code Online (Sandbox Code Playgroud)

通过此错误消息:

编译器错误消息:CS1502:'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配有一些无效的参数

为什么使用'{''}'这么重要?

谢谢

c# asp.net asp.net-mvc renderaction razor

7
推荐指数
1
解决办法
2247
查看次数