Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc 从视图内部处理ActionResult_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 从视图内部处理ActionResult

Asp.net mvc 从视图内部处理ActionResult,asp.net-mvc,Asp.net Mvc,描述我的情景将是描述我试图实现的目标的最佳方式。我正在寻找一个更清洁的解决方案,如果它存在的话 我们有要锁定的内容。我抽象了解锁模型,因为我们可以有不同的类型。它可能是重定向或渲染的局部视图,或者将来可能出现的其他内容,因此我决定尝试返回ActionResult public abstract class AContentUnlocker { public abstract ActionResult GetUnlockActionResult(); } public class Red

描述我的情景将是描述我试图实现的目标的最佳方式。我正在寻找一个更清洁的解决方案,如果它存在的话

我们有要锁定的内容。我抽象了解锁模型,因为我们可以有不同的类型。它可能是重定向或渲染的局部视图,或者将来可能出现的其他内容,因此我决定尝试返回ActionResult

public abstract class AContentUnlocker
{
    public abstract ActionResult GetUnlockActionResult();
}

public class RedirectUnlocker : AContentUnlocker
{
    public override ActionResult GetUnlockActionResult()
    {
        return new RedirectResult("http://www.url1.com?returnUrl=mywebsiteagain");
    }
}

public class PartialViewUnlocker: AContentUnlocker
{

    public override ActionResult GetUnlockActionResult()
    {
        PartialViewResult view = new PartialViewResult();
        view.ViewName = "_PartialViewToUnlock";
        return view;
    }
}
@{
   Model.ContentUnlocker.GetUnlockActionResult().ExecuteResult(this.ViewContext);
}

return View(myContent);
我的内容将在一个具有适当解锁机制的模型中表示

public class MyContent
{
    public string Description { get; set; }
    public AContentUnlocker ContentUnlocker { get; set; }
}
在我的控制器中,我只需返回设置了正确解锁机制的所需内容

public ActionResult Index()
{
    MyContent myContent = new MyContent() { 
        Description = "Content 1", 
        ContentUnlocker = new PartialViewUnlocker() 
    }; 

    return View(myContent);
}
在我的索引视图中,我将执行ActionResult

public abstract class AContentUnlocker
{
    public abstract ActionResult GetUnlockActionResult();
}

public class RedirectUnlocker : AContentUnlocker
{
    public override ActionResult GetUnlockActionResult()
    {
        return new RedirectResult("http://www.url1.com?returnUrl=mywebsiteagain");
    }
}

public class PartialViewUnlocker: AContentUnlocker
{

    public override ActionResult GetUnlockActionResult()
    {
        PartialViewResult view = new PartialViewResult();
        view.ViewName = "_PartialViewToUnlock";
        return view;
    }
}
@{
   Model.ContentUnlocker.GetUnlockActionResult().ExecuteResult(this.ViewContext);
}

return View(myContent);
重定向操作结果运行良好。 我的问题是,对于部分视图操作结果,给定MVC的执行周期,部分视图在控制器视图之前呈现。因此,我得到了如下结果:

<!-- html of the partial view rendered -->
<div> blah blah </div>

<!-- html of the parent view -->
<html>
  <head></head>
  <body> blah   .... </body>
</html>

废话
诸如此类。。。。
我不确定这是否可能,但有没有一种方法可以像Html.RenderPartial那样执行我的ActionResult