关于ASP.NET Web Pages Global

时间:2013-05-14 17:00:33

标签: asp.net asp.net-mvc-3

我是asp.net的新学员。我看到“_appstart.cshtml”,“_ pagestart.cshtml”和“_viewstart.cshtml”,它们的行为类似于全局页眉或页脚。

(1)如果我想在输出页面之前触发某些内容,我应该将代码放在其他人的_viewstart.cshtml中吗?

(2)让C成为输出之前的html代码,除了将代码附加到C之外我可以替换C中的代码吗?如使所有文本大写或替换一些文本?

(3)asp.net会缓存这个进程,这样我每次都不会运行吗?

1 个答案:

答案 0 :(得分:2)

benone

回答第1点

_ViewStart文件可用于定义要在每个View渲染开始时执行的公共视图代码。例如,我们可以在_ViewStart.cshtml文件中编写代码,以编程方式将每个View的Layout属性默认设置为SiteLayout.cshtml文件

实际上它就像ASP.Net中的一个BasePage,我们可以保留公共代码。

或者您可以直接在View中编写逻辑,如下所示。

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
  if (Some Consition) {
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
  }
}

替代地

您可以覆盖在执行操作方法之前执行的Action Executing方法。您可以为特定的Action方法或完整控制器

设置它

以下是为完全控制器设置它的代码。

protected override void OnActionExecuting(ActionExecutingContext ctx) {
    base.OnActionExecuting(ctx);
}

以下是为特定行动方法设置它的代码

[MyAttribute(SomeProperty = "")]
public ActionResult Index()
{
     return View("Index");
}

public class MyAttribute : ActionFilterAttribute
{
    public string SomeProperty { get; set; }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
    }
}

回答第2点

您可以使用

  var str = Html.Partial("_Partial_View_Name");

部分返回MvcHtmlString。您可以通过将输出设置为变量来拦截输出并进行必要的更改。

回答第3点

是。以下是示例代码

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        [OutputCache(Duration=10, VaryByParam="none")]
        public ActionResult Index()
        {
            return View();
        }

    }
}

Index()动作的输出缓存10秒