2011-03-19 5 views
4

저는 HTML 헬퍼에 대한 아이디어가 마음에 들었습니다. 공통된 요소에 대해 HTML을 모두 작성하지 않고도 완전히 제어 할 수 있고 모델 뷰 분리를 유지하며 강력하게 입력 할 수 있습니다.CSS 생성을위한보기 도우미가 있습니까?

뷰 마크 업에서 도우미를 사용하여 CSS 스타일 시트 또는 스타일 정의를 동일한 방식으로 생성 할 수 있는지 궁금합니다. 이상적으로는, 일부 객체 지향 규칙과 정의를 기반으로 CSS를 생성하고 싶습니다.

스타일 시트 압축 및 병합 이상의 기능을 제공하는 솔루션을 찾을 수 없습니다.

답변

1

당신이 원하는 것은 불가능하지 않지만 기본적으로 설정되는 방식은 불가능합니다. 그 이유는 CSS 파일이보기와 같이 "해석 된"것이 아니기 때문입니다. 그들은 방금 통과했습니다.

CSS를 생성하는 핸들러를 작성할 수도 있지만 HTML 도우미와 같은 것은 아닙니다.

이론적으로 CSS 인라인을 삽입하는 HTML 도우미를 작성할 수는 있지만 CSS가 여러 파일에 동일한 CSS를 포함시켜 더 큰 대역폭을 사용해야하기 때문에 CSS의 목적을 실제로 상쇄합니다.

그래서 기본적으로 대답은 .. 아니요. 거기에는 CSS 용 HTML 도우미와 같은 것이 없습니다. 그리고 그것이 존재하지 않을 가능성이 가장 큰 이유는 그것이 가치있는 것보다 후방에 더 많은 고통을 준다는 것입니다.

public class CssViewResult : PartialViewResult 
{ 
    private readonly object _model; 
    public CssViewResult(object model) 
    { 
     _model = model; 
    } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     this.ViewData.Model = _model; 
     base.ExecuteResult(context); 
     context.HttpContext.Response.ContentType = "text/css"; 
    } 
} 

하고 간단한 컨트롤러 액션 : 쉬운 방법에

+0

강하게 타이핑하는 스타일로 [GWT가이 문제를 깔끔하게 처리합니다.] (https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder#Hello_Stylish_World) 그렇게 불가능하지 않습니다. 나는 ASP.NET MVC에서 자바가 아닌 C#으로 코드를 작성하는 것과 비슷한 기능을 찾고 있습니다. – orad

5

사용자 정의보기 결과를 사용하는 것입니다

@model AppName.Models.SomeModel 
.foo { 
    background-color: @Model.SomeColor; 
} 
:
public ActionResult MyCss() 
{ 
    SomeModel model = ... 
    return new CssViewResult(model); 
} 

와 해당 MyCss.cshtml보기

다음 :

<link href="@Url.Action("MyCss", "SomeController")" rel="stylesheet" type="text/css" /> 
+0

면도기와 함께 작동합니까? 웹 양식보기 엔진에 대한 나의 경험은 콘텐츠 형식 헤더를 부풀려서 실제로 작동하도록 onprerender를 대체해야했습니다. –

+0

@Wyatt Barnett, 내가 제공 한 예는 면도기이지만 WebForms 뷰 엔진에서도 작동해야합니다. –

+0

일부 CSS 값만 강하게 입력하지만 .foo와 class = "foo"를 정의하는 요소 간에는 종속 관계가 없습니다. 즉, 뷰를 사용하는 요소가 여전히있을 때 뷰에서 .foo를 삭제하면 경고/오류가 발생하지 않습니다. – orad

관련 문제