- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图更好地理解 View 组件的“幕后”。我知道标准方法是使用
调用ViewComponent
@await Component.InvokeAsync("MyViewComponent", itsModel)
或 .cshtml 文件中的 View 组件标签助手。
不过,也可以通过其他方式使用 View 组件。因此,例如,您可以通过在操作方法中使用 return ViewComponent("MyViewComponent", itsModel);
直接从 Controller 返回 View 。
看起来应该可以轻松地将 View 组件呈现为字符串。我看到在 ViewComponent("MyViewComponent", itsModel);
返回的 ViewComponetResult
上有一个 ExecuteResult
方法。
在 Controller 中可以这样调用:
ViewComponent("MyViewComponent", itsModel).ExecuteResult(this.ControllerContext);
乍一看,我希望这样的方法返回一个 html 字符串。但它返回无效。为什么?如果 ViewComponentResult.ExecuteResult
没有返回结果,它在做什么?以及如何将 ViewComponentResult
呈现为 HTML 字符串?
最佳答案
我终于明白这是怎么回事了。 @TavisJ 的评论给我提示并让我朝着正确的方向进行研究。
在 ViewComponentResult
或更普遍的情况下,在 any ActionResult
上,ExecuteResult
返回 void,因为ViewComponent
被写入关联的 HttpResponse.Body
。这对于调用的异步版本也是如此,当然它会返回一个任务。
例如,如果一个人要调用以下电话:
await ViewComponent("MyViewComponent", itsModel).ExecuteResultAsync(this.ControllerContext);
要捕获 View 组件的“输出”,首先需要用他们选择的流替换 this.ControllerContext.HttpResponse.Response.Body
,然后再执行 ExecuteResultAsync
调用,以便在流中捕获输出,然后可以将其转换为字符串。
当然,原始流应该放回 this.ControllerContext.HttpResponse.Response.Body
以便 View 的其余部分正确呈现。
关于c# - 为什么 ViewComponentResult.ExecuteResult 方法返回 void?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50164661/
我有一个 asp.net mvc4 应用程序,当我将其发布到 azure 时,加载页面的时间太长。我安装了glimpse来检查问题出在哪里,它显示 ViewResult.ExecuteResult 是
我试图更好地理解 View 组件的“幕后”。我知道标准方法是使用 调用 ViewComponent @await Component.InvokeAsync("MyViewComponent", i
我正在尝试创建集成测试以确保我的 View 中没有任何运行时错误。因此,我需要创建一个测试来检查 ViewResult.ExecuteResult() 是否正常工作,但我似乎遇到了麻烦。 我找到了 t
问题... 对 进行单元测试的最佳方法是什么?字符串响应 和 内容类型 从几个 Controller 方法? 使用... 每个方法返回一个 ActionResult ,其中一些是 ViewResult
我有这个jsp 如果上传的文件不是图片,我想返回到同一页面并显示错
什么相当于: this.View("ViewName").ExecuteResult(this.ControllerContext); 用于显示另一个 Controller 中的 View 。
ViewData.Model.ExecuteResult 在 ASP.NET MVC2 中不存在,但在 MVC1 中。 ASP.NET MVC2 中的替代方案是什么? 我想要做的是在 ajax 请求之
我想在 TempData 中保存通知并显示给用户。我为此创建了扩展方法并实现了一个从 ActionResult 扩展的类.我需要访问 TempData在 override ExecuteResult方
我正在创建一些自定义操作结果,如下所示。 public class MyActionResult : ActionResult { public override void ExecuteRe
我是一名优秀的程序员,十分优秀!