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