0

我是asp.net的新手。我看到了“_appstart.cshtml”、“_pagestart.cshtml”和“_viewstart.cshtml”,它们的作用类似于全局页眉或页脚。

(1)如果我想在页面输出之前触发一些东西,我应该把代码放在别人的_viewstart.cshtml中吗?

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

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

4

1 回答 1

2

苯酮

回答第 1 点

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

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

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

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

或者

您可以覆盖 Action Executing 方法,该方法在执行 Action 方法之前执行。您可以为特定的 Action 方法或 Complete Controller 设置它

下面是为 Complete Controller 设置它的代码。

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 秒

于 2013-05-14T18:54:24.630 回答