MVC라고 가정하면 내 CsQuery 프로젝트를 살펴보십시오. CsQuery는 jQuery 포트 및 CSS 선택기 엔진으로 HTML을 직접 사용하는 데 사용할 수 있습니다. 그러나 더 중요한 것은이 프로젝트에는 MVC에서 C#으로 렌더링되기 전에 페이지의 HTML에 액세스하는 코드 예제가 포함되어 있다는 것입니다.
부분보기에 액세스하는 것은 매우 쉽습니다. 주제에 대한 Rick Strahl의 blog post을 참조하십시오.
페이지의 전체 HTML에 액세스하고 렌더링하기 전에 변경하려는 경우 사용자 정의 ViewEngine
을 만들고 HTML에 액세스 할 수있는 컨트롤러에 콜백해야합니다. 이 권리를 행사하는 데는 상당히 관련이 있습니다. 수백 줄의 코드를 복사 오히려보다는 CsQueryView
폴더에 특정 클래스, MVC 응용 프로그램이 CsQuery에 포함 된 예를 살펴 :
https://github.com/jamietre/CsQuery/tree/master/examples/CsQuery.MvcApp
이 사용자 정의보기 엔진과 사용자 정의 컨트롤러 기본 클래스를 포함
// runs for all actions
public void Cq_Start()
{
Doc["a.not-allowed"]
.Attr("onclick","javascript:alert('You're not authorized to click this')");
}
// runs for the Index action
public void Cq_Index()
Doc["div"].Css("border", "1px solid red;");
}
이 방법은 해당 후 정규 액션 메소드라고하며, Doc
의 값을 설정 : 그건 당신이이 같은 컨트롤러 방법을 추가 할 수 있습니다. Doc
은 CQ
개체 (CsQuery의 핵심 개체)입니다. 여기에는 페이지의 모든 HTML이 포함됩니다. jQuery 객체와 같습니다. 당신의 상황에서 당신은 같은 jQuery를 방법을 사용할 수 있습니다하지 않으려면
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CsQueryViewEngine());
:
// select all divs on the page
var div = Doc["div"];
// do parameter substitution
var newText = div.Text().Replace("@name", valid_name);
// update the text
div.Text(newText);
는 Application_Start
에이 코드를 추가해야이보기 엔진을 사용하도록 MVC 응용 프로그램을 전환하려면 그러나 CsQuery를 사용하면 렌더링 전에 MVC에서 HTML 출력에 액세스하는 방법을 보여줘야합니다. 리플렉션을 사용하여 컨트롤러에서 콜백하는 메서드를 찾아 내고 CsQuery 객체 대신 HTML 문자열을 제공하도록 쉽게 조정할 수 있습니다.
"현재 페이지의 HTML을 가져올 수 있습니다."WebForms, MVC, NancyFX를 사용하고 있다면 우리에게 말하지 않았습니다 ... –