자체 제작 MVC 프레임워크 기본 플러그인 소개
12450 단어 mvc
1). CompiledAttribute
방법 이름에 설정하면 프로그램이 MVC 모드를 처리한 후에 웹포름 작업을 구동하고 이들의 작업 모드가 결합된 것을 설명하는 데 사용된다.
컨트롤러 코드:
namespace Jobmate.Controllers
{
public class Default
{
[Compiled]
public virtual IDictionary Compiled1(IDictionary context)
{
context.Add("x", "b");
return context;
}
}
}
Compiled1.aspx 페이지 코드:
페이지 끝:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Compiled1.aspx.cs" Inherits="integration_class_Compiled1" %>
<%="aaa"%>
페이지 백엔드 호출:
public partial class integration_class_Compiled1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// hashtable, ,
IDictionary context = (IDictionary)HttpContext.Current.Items["context"];
Response.Write(context["x"]);
}
}
2). DynamicAttribute
클래스 이름에 설정하면 이 클래스가 동적으로 차단되어야 한다는 것을 나타냅니다.aspectsharp를 통해 차단됩니다.
컨트롤러 코드:
namespace Jobmate.Controllers
{
[Dynamic]
public class Default
{
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
[IP(AspectPriority = 0)]
public virtual IDictionary Dynamic1(IDictionary context) // ,
{
context.Add("x", "b");
return context;
}
}
}
Web.config 구성:
<configuration>
…
<!--AOP , Stephen.Core.Proxy , ,advice -->
<aspectsharp>
<configuration>
aspect processor1 for [Jobmate.Controllers]
pointcut method(* Dynamic1(*))
advice(ShareInterceptor)
end
end
</configuration>
</aspectsharp>
…
</configuration>
차단기 ShareInterceptor 코드:
namespace Jobmate.Controllers.Interceptor
{
[Serializable]
public class ShareInterceptor : AspectInterceptor
{
public override void Proceed(IDictionary myContext)
{
myContext.Add("aaa", "xxx");
}
}
}
Dynamic1.aspx에서 $aaa만 입력
실행 후 페이지 출력: xxx
3). HasSessionAttribute
방법 이름에 설정하면 이 방법은 세션 기능이 있고 기본 방법은 세션 기능이 없다는 것을 나타낸다.
컨트롤러 코드:
namespace Jobmate.Controllers
{
[Dynamic]
public class Default
{
/// <summary>
/// ValidateKey
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
[Insert(AspectPriority = 2, Key = "Jobmate.Users", StatementID = "UserOpt", ValidateKey = "ValidateNO")]
[LongID(AspectPriority = 1)]
[FormData(AspectPriority = 0)]
[HasSession]
public virtual object Create3Action(IDictionary context)
{
long s = Convert.ToInt64(context[InsertAttribute.ValueKey]);
string st;
if (s > 0)
st = " !";
else
if (s == -404)
st = " !";
else
st = " !";
HttpContext.Current.Response.Write("<script>alert('" + st + "');document.location.href='HashSession1.aspx'</script>");
HttpContext.Current.Response.End();
return s;
}
}
}
4). OutputCacheAttribute
방법 이름에 캐시 페이지가 연결된 문자열을 설정하고 다음에 페이지를 열면 캐시 문자열을 직접 가져옵니다. 관련 작업을 처리하지 않아도 됩니다.
속성 이름
역할
기본값
옵션 설명
기타 설명
Duration
만료 시간(초)
30
선택 사항
VaryByParam
캐시 매개 변수, 쉼표로 구분하고, 페이지는 매개 변수가 변하지 않으면 캐시의 내용을 출력합니다. (대소문자 구분)
빈값
선택 사항
컨트롤러 코드:
namespace Jobmate.Controllers
{
[Dynamic]
public class Default
{
/// <summary>
/// 100 ,
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
[OutputCache(Duration = 100)]
[Get(Key = "Jobmate.Users.UserOpt")]
public virtual IDictionary OutputCache1(IDictionary context)
{
return context;
}
}
}
5).WebForm 페이지를 통해 직접
새 웹form은 제어층에 대응하는 방법이 없으면 웹form의 원래 호출을 실행합니다.
이상의 방식은 데모에서 체험할 수 있습니다.
demo 다운로드:
http://files.cnblogs.com/netcorner/%E5%9F%BA%E7%A1%80%E6%8F%92%E4%BB%B6%E6%BC%94%E7%A4%BA.rar
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클린 아키텍처의 Presenter를 이해하기 어려운 것은 MVC 2가 아니기 때문에클린 아키텍처에는 구체적인 클래스 구성 예를 보여주는 다음 그림이 있습니다. 이 그림 중에서 Presenter와 Output Boundary(Presenter의 인터페이스)만 구체 구현을 이미지하는 것이 매우 어렵다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.