0
자바 스크립트를 사용하지 않는 사용자가 사용할 수있게하려는 SPA에서 작업하고 있습니다. 이 작업을 수행하기 위해 제출 및 탐색 버튼에 ajax 도우미 메서드를 사용합니다.이 버튼은 기본적으로 스크립트가 비활성화되었을 때 일반 http 요청으로 돌아갑니다.@section 렌더링 프로세스 수정
그때 내 컨트롤러 전체 조회수로 내 파셜의 각을 렌더링하고 다음으로 _ViewStart.cshtml를 오버라이드 (override) :
@{
Layout = Request.IsAjaxRequest() || ViewContext.IsChildAction
? null
: "~/Views/Shared/_Layout.cshtml";
}
이렇게함으로써, 아약스 요청은 기본적으로있는 동안 비 아약스 요청 것, 파셜을 반환 레이아웃을 사용하고 전체보기를 반환하십시오.
이 문제는 뷰가 레이아웃없이 렌더링 될 때 @section이 부딪치지 않도록 각 뷰에 일부 논리를 포함해야한다는 것입니다.
@{
bool _partial = Request.IsAjaxRequest() || ViewContext.IsChildAction;
Layout = _partial ? null : "~/Views/Shared/_Layout.cshtml";
}
@if (!_partial)
{
@section Styles{
<style>
**some style**
</style>
}
@section Scripts{
<script type="text/javascript">
**some script**
</script>
}
** body **
}
else
{
<style>
**some style**
</style>
<script type="text/javascript">
**some script**
</script>
** body **
}
기본적으로이 내가 내가 변경할 때 코드의 두 세트를 업데이트 할 필요가로 지저분 각 뷰, 코드를 복제 할 필요가 있음을 의미 예를 들면 다음과 같습니다이다. @section을 사용하여 _partial 검사를 수행하고 @section (예 : .section Scripts {} 또는 HTML 스크립트 태그)이 사용되는 곳마다 RenderSection 또는 HTML을 사용하여 렌더링 할 수있는 확장 프로그램을 작성할 수있는 방법이 있습니까? 단일보기 만 작성하면됩니까?
'