我是asp.net的新学员。我看到“_appstart.cshtml”,“_ pagestart.cshtml”和“_viewstart.cshtml”,它们的行为类似于全局页眉或页脚。
(1)如果我想在输出页面之前触发某些内容,我应该将代码放在其他人的_viewstart.cshtml中吗?
(2)让C成为输出之前的html代码,除了将代码附加到C之外我可以替换C中的代码吗?如使所有文本大写或替换一些文本?
(3)asp.net会缓存这个进程,这样我每次都不会运行吗?
答案 0 :(得分:2)
benone
_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);
}
}
您可以使用
var str = Html.Partial("_Partial_View_Name");
部分返回MvcHtmlString。您可以通过将输出设置为变量来拦截输出并进行必要的更改。
是。以下是示例代码
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
return View();
}
}
}
Index()动作的输出缓存10秒