ASP.Net Core MVC보기에서 ViewComponent 새로 고침

지미 록 스타

다음 코드 줄을 사용하여 내 이벤트 뷰 index.cshtml에로드되는 뷰 구성 요소 EventsViewComponent가 있습니다.

<div id="events">
    @await Component.InvokeAsync("Events", new { showPrevious = Model.ShowPrevious, showUpcoming = Model.ShowUpcoming })
</div>

다음과 같이 두 개의 확인란이 추가되었습니다.

@Html.CheckBoxFor(m => m.ShowPrevious, new { id = "cbShowPrevious", onchange = "ReloadEvents()" })
@Html.CheckBoxFor(m => m.ShowUpcoming, new { id = "cbShowUpcoming", onchange = "ReloadEvents()" })

ReloadEvents ()는 다음과 같은 Ajax 호출로 EventsViewComponent를 새로 고치려는 Javascript 함수를 나타냅니다.

function ReloadEvents() {
    $.ajax({
        url: '@Url.Action("ReloadEvents", "Events")',
        data: {
            showPrevious: document.getElementById("cbShowPrevious").checked,
            showUpcoming: document.getElementById("cbShowUpcoming").checked
        },
        success: DoThis()
    })
}

function DoThis() {
    const eventsDiv = document.getElementById('events');
    eventsDic.innerHTML = //HTML from EventsViewComponent
}

하지만 EventsViewComponent에서 HTML을 가져올 수없는 것 같습니다.

다음과 같이 EventsViewComponent에 대한 Default.cshtml을 작성했습니다.

@{
    List<Event> events = ViewData["Events"] as List<Event>;
    if (events.Count > 0)
    {
        <table>
            //event data from the model
        </table>
    }
}

EventsController의 ReloadEvents 메서드와 마찬가지로 EventsViewComponent의 InvokeAsync 메서드가 공격을 받고 있지만 EventsViewComponent를 업데이트 할 수없는 것 같아서 분명히 뭔가 오해하고 있습니다.

이것이 가능한지 그리고 그것을 달성하는 방법을 조언 해 줄 수 있습니까?

레나

EventsViewComponent에서 HTML을 가져 오려면 아래와 같이 변경해야합니다.

success: function (data) {
        $("#events").html(data);
}

다음은 다음과 같은 전체 작동 데모입니다.

1. 모델 :

public class Event
{
    public bool ShowPrevious { get; set; }
    public bool ShowUpcoming { get; set; }
    public string Data { get; set; }
}

2. ViewComponent :

public class EventsViewComponent : ViewComponent
{
    List<Event> data = new List<Event>() {
        new Event(){ ShowPrevious=true,ShowUpcoming=false,Data="aaa"},
        new Event(){ ShowPrevious=false,ShowUpcoming=true,Data="bbb"},
        new Event(){ ShowPrevious=false,ShowUpcoming=true,Data="ccc"},
    };
    public IViewComponentResult Invoke(bool showPrevious,bool showUpcoming)
    {
        if (showPrevious == true && showUpcoming == true)
        {
            ViewData["Events"] = data;
        }
        else if (showPrevious)
        {
            ViewData["Events"] = data.Where(u => u.ShowPrevious == true).ToList();
        }
        else if(showUpcoming)
        {
            ViewData["Events"] = data.Where(u => u.ShowUpcoming == true).ToList();
        }
        return View();
    }
}

3. 컨트롤러 :

public class HomeController : Controller
{

    public IActionResult ReloadEvents(bool showPrevious, bool showUpcoming)
    {
        return ViewComponent("Events", new { showPrevious = showPrevious, showUpcoming = showUpcoming });
    }
    public IActionResult Index()
    {
        var model = new Event() { ShowPrevious = true, ShowUpcoming = true };
        return View(model);
    }
}

4. Index.cshtml :

@model Event
@Html.CheckBoxFor(m => m.ShowPrevious, new { id = "cbShowPrevious", onchange = "ReloadEvents()" })
@Html.CheckBoxFor(m => m.ShowUpcoming, new { id = "cbShowUpcoming", onchange = "ReloadEvents()" })
<div id="events">
    @await Component.InvokeAsync("Events", new { showPrevious = Model.ShowPrevious, showUpcoming = Model.ShowUpcoming })
</div>

@section Scripts
{
<script>
    function ReloadEvents() {
        $.ajax({
        url: '@Url.Action("ReloadEvents", "Home")',
        data: {
        showPrevious: document.getElementById("cbShowPrevious").checked,
        showUpcoming: document.getElementById("cbShowUpcoming").checked
            },
            success: function (data) {
                $("#events").html(data);
            }
        })
} 
</script> 
}

5. Default.cshtml (뷰 구성 요소 Razor 뷰) :

@model Event
@{
    List<Event> events = ViewData["Events"] as List<Event>;
    if (events.Count > 0)
    {
        <table>
            <tr>
                <th>ShowPrevious</th>
                <th>ShowUpcoming</th>
                <th>Data</th>
            </tr>
            <tbody>
                @foreach (var item in events)
                {
                    <tr>
                        <td>@item.ShowPrevious</td>
                        <td>@item.ShowUpcoming</td>
                        <td>@item.Data</td>
                    </tr>
                }

            </tbody>
        </table>
    }
}

결과: 여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.NET Core에서 AddOpenIdConnect 및 새로 고침 토큰

분류에서Dev

ViewComponent Asp.Net Core에서 현재 로그인 사용자를 얻는 방법

분류에서Dev

ASP.NET Core 3.1 MVC에서 단추 클릭시 새보기로 이동

분류에서Dev

ASP.NET 탭 패널에서 aspx 페이지 새로 고침

분류에서Dev

ASP.NET MVC 4의 ViewComponent

분류에서Dev

Asp.Net Core는 ViewComponent를 변수로 렌더링합니다.

분류에서Dev

ASP.net 새로 고침 제어

분류에서Dev

ASP.NET MVC jQuery Ajax-모달 대화 상자에서 부모 테이블 닫기 및 새로 고침

분류에서Dev

ASP.NET의 단추에서 페이지 새로 고침 방지

분류에서Dev

asp.net Core 3.1에서 자동 생성 된 새로 고침 토큰을 사용하는 방법은 무엇입니까?

분류에서Dev

asp.net C #-DataList1의 값에 따라 DataList2 새로 고침

분류에서Dev

ASP Net Core 3.1 WebApp이 Razor 템플릿 수정시 새로 고침되지 않음

분류에서Dev

정적 Json 파일을 읽고 ASP .Net Core에서 테이블로보기

분류에서Dev

버튼 클릭 asp .net으로 jquery 새로 고침 div

분류에서Dev

ASP.NET MVC-익명 Ajax 요청에 대한 인증 쿠키 새로 고침

분류에서Dev

c # asp net updatepanel 원인 페이지 새로 고침

분류에서Dev

asp.net 새로 고침 다른 웹 양식 griview

분류에서Dev

asp.Net Core ViewComponent는 CSS를 표시하지 않습니다.

분류에서Dev

사용자 로그인 성공 후 페이지 일부 새로 고침 (ASP.NET MVC4)

분류에서Dev

ASP.NET Core MVC에서 컨트롤러로 데이터베이스의 정보 읽기

분류에서Dev

한보기에서 다른 ASP.NET CORE 5.0 MVC로 데이터를 표시하는 방법

분류에서Dev

PDFTron XOD 뷰어가 ASP.NET Core MVC 6 Razor보기에서로드되지 않음

분류에서Dev

Asp.Net Core Razor 탭 페이지의 게시물에서 특정 탭을 새로 고치는 방법

분류에서Dev

사용자 이름이 변경된 후 탐색 모음에서 사용자 이름 새로 고침 (Asp.Net, MVC 및 C # 사용)

분류에서Dev

ASP.NET MVC에서 응용 프로그램 풀 새로 고침 및 뷰의 미리 컴파일에 대한 세부 정보를 이해하려고합니다.

분류에서Dev

Bootstrap 모달 .NET Core 3.1 C # 내에서 ViewComponent 반환

분류에서Dev

ASP.NET Core MVC에서 새 랜딩 페이지 설정

분류에서Dev

asp.net C # 새로 고침없이 텍스트 상자 값 업데이트

분류에서Dev

asp.net mvc에서 크리스탈 보고서를로드하기위한 자바 스크립트 코드

Related 관련 기사

  1. 1

    ASP.NET Core에서 AddOpenIdConnect 및 새로 고침 토큰

  2. 2

    ViewComponent Asp.Net Core에서 현재 로그인 사용자를 얻는 방법

  3. 3

    ASP.NET Core 3.1 MVC에서 단추 클릭시 새보기로 이동

  4. 4

    ASP.NET 탭 패널에서 aspx 페이지 새로 고침

  5. 5

    ASP.NET MVC 4의 ViewComponent

  6. 6

    Asp.Net Core는 ViewComponent를 변수로 렌더링합니다.

  7. 7

    ASP.net 새로 고침 제어

  8. 8

    ASP.NET MVC jQuery Ajax-모달 대화 상자에서 부모 테이블 닫기 및 새로 고침

  9. 9

    ASP.NET의 단추에서 페이지 새로 고침 방지

  10. 10

    asp.net Core 3.1에서 자동 생성 된 새로 고침 토큰을 사용하는 방법은 무엇입니까?

  11. 11

    asp.net C #-DataList1의 값에 따라 DataList2 새로 고침

  12. 12

    ASP Net Core 3.1 WebApp이 Razor 템플릿 수정시 새로 고침되지 않음

  13. 13

    정적 Json 파일을 읽고 ASP .Net Core에서 테이블로보기

  14. 14

    버튼 클릭 asp .net으로 jquery 새로 고침 div

  15. 15

    ASP.NET MVC-익명 Ajax 요청에 대한 인증 쿠키 새로 고침

  16. 16

    c # asp net updatepanel 원인 페이지 새로 고침

  17. 17

    asp.net 새로 고침 다른 웹 양식 griview

  18. 18

    asp.Net Core ViewComponent는 CSS를 표시하지 않습니다.

  19. 19

    사용자 로그인 성공 후 페이지 일부 새로 고침 (ASP.NET MVC4)

  20. 20

    ASP.NET Core MVC에서 컨트롤러로 데이터베이스의 정보 읽기

  21. 21

    한보기에서 다른 ASP.NET CORE 5.0 MVC로 데이터를 표시하는 방법

  22. 22

    PDFTron XOD 뷰어가 ASP.NET Core MVC 6 Razor보기에서로드되지 않음

  23. 23

    Asp.Net Core Razor 탭 페이지의 게시물에서 특정 탭을 새로 고치는 방법

  24. 24

    사용자 이름이 변경된 후 탐색 모음에서 사용자 이름 새로 고침 (Asp.Net, MVC 및 C # 사용)

  25. 25

    ASP.NET MVC에서 응용 프로그램 풀 새로 고침 및 뷰의 미리 컴파일에 대한 세부 정보를 이해하려고합니다.

  26. 26

    Bootstrap 모달 .NET Core 3.1 C # 내에서 ViewComponent 반환

  27. 27

    ASP.NET Core MVC에서 새 랜딩 페이지 설정

  28. 28

    asp.net C # 새로 고침없이 텍스트 상자 값 업데이트

  29. 29

    asp.net mvc에서 크리스탈 보고서를로드하기위한 자바 스크립트 코드

뜨겁다태그

보관