0
我有一个自定义的IHttpHandler,即时通讯使用在MVC3中调用我的控制器。问题是,当我调用View(“〜/ path/to/my/view.cshtml”)时,我什么都没有。没有错误。没什么,只是空的来源和200好。使用IHttpHandler从控制器调用的视图什么都不返回
由于即时调用这个我的自我有没有开始的视图生命周期的一部分?
的IHttpHandler:从控制器
public class MyHttpHandler : IHttpHandler
{
ISimpleController _c;
public SimpleHttpHandler(Controller c)
{
_c = c;
}
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
_c.Get();
}
代码:
public new ActionResult Get()
{
ViewBag.Proof = "Ping";
ViewBag.Of = "Pong";
ViewBag.Life = "Fizz";
return View("~/Views/Shared/WhatAView.cshtml");
}
WhatAView.cshtml:
<ul>
@foreach(var pair in ViewData)
{
<li>@pair.Key : @pair.Value</li>
}
</ul>
所以我应该叫ViewContext在MyHttpHandler.ProcessRequest?然后我仍然在Controller中调用View()。我认为View()的结果然后在ActionResult中,并且可以被ViewContext() – QueueHammer 2012-07-24 17:26:48
@QueueHammer使用我发现我最初提出的实现已经存在于ViewResult.ExecuteResult()中。请阅读我更新的答案。顺便说一句,你说得对,需要使用ActionResult,ViewContext构造函数的3d参数应该是(ViewResult)ActionResult.ViewData。 – 2012-07-24 22:50:30