.Net Core를 사용하여 웹 페이지를 만들고 있는데 지금은 꽤 복잡한 프로그램이 있습니다. 나는 서로 다른 속성을 가진 두 개의 서로 다른 모델 (고객과 사용자)을 가지고 있으며 각각 컨트롤러와 뷰를 가지고있다..Net Core -보기를 탭에 넣기
이 두보기/컨트롤러를 탭보기에 함께 넣어 고객 탭 아래에 고객 인덱스가 표시되고 사용자 탭 아래에 사용자 인덱스가 표시되도록하려고합니다. 나는 다음 생성 것과 유사 할 것을 권장합니다
<div>
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active">
<a href="#first" aria-controls="first" role="tab" data-toggle="tab">First</a>
</li>
<li role="presentation">
<a href="#second" aria-controls="second" role="tab" data-toggle="tab">Second</a>
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="first">
Customer
</div>
<div role="tabpanel" class="tab-pane" id="second">
User
</div>
</div>
</div>
닷넷 핵심이 가능합니까?
EDIT1 :
내가 그러나 나는이를 사용하는 방법에 대한 전문가가 아니다, 부분 뷰를 사용하는 나는이 방법이있을 수있다 생각하는 방법을 알고있다. 나는 모델의 세부 정보 페이지가 표시되는 방식을 재구성하는 데 사용했습니다. 그러나 이미 두 개의 완전한 컨트롤러와 해당 뷰를 구현 했으므로 더 쉬운 방법이 있는지 궁금해하고 있었습니까?
viewModel (고객 및 사용자 목록 포함)을 만들어 그 중 하나를 표시 할 수 있습니까? (두보기에서 PaginatedList를 사용하여 페이지에 표시된 항목의 수를 제한하고 제한합니다.) 아래 컨트롤러에서 DB에서 고객과 사용자를 가져 와서 viewModel에 전달한 다음 View에 전달합니다. 이것은 .Net Core에서 어떻게 수행 할 수 있습니까? (문제는 컨트롤러의 주석 처리 된 코드에서 찾을 수 있습니다).
모델
public class CustomerUserViewModel
{
public PaginatedList<Customer> Customers { get; set; }
public PaginatedList<User> Users { get; set; }
//OR
public List<Customer> Customers { get; set; }
public List<User> Users { get; set; }
}
보기
@model CustomerUserViewModel
<h2>CustomerUserTabbing</h2>
<div>
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active">
<a href="#first" aria-controls="first" role="tab" data-toggle="tab">Customer</a>
</li>
<li role="presentation">
<a href="#second" aria-controls="second" role="tab" data-toggle="tab">User</a>
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="first">
@Html.Partial("~/Views/Customer/Index.cshtml", Model.Customers)
</div>
<div role="tabpanel" class="tab-pane" id="second">
@Html.Partial("~/Views/User/Index.cshtml", Model.Users)
</div>
</div>
</div>
컨트롤러
public IActionResult CustomerUserTabbing()
{
//I found that these two lines don't actually return anything
//See new code below this
//var userlist = from u in _context.Users select u;
//var customerlist = from c in _context.Customers select c;
//New Code
var users = _context.Users
.Where(u => u.UserID != 0)
.OrderBy(u => u.First_Name)
.ToList();
var customers = _context.Customers
.Where(c => c.CustomerID != 0)
.OrderBy(c => c.Name)
.ToList();
CustomerUserViewModel viewModel = new CustomerUserViewModel();
viewModel.Customers = customers; //these two lines gives errors
viewModel.Users = users; //cannot convert IQueryable to PaginatedList
return View(viewModel);
}
사람이이 문제를 해결하는 방법을 알고 있나요? ASP.NET MVC의 이전 버전의
각보기에서 온다, 그러나 나는'@ Html.Action' 비주얼 스튜디오를 사용하려고하면 불평. 내가 사용할 수있는 유일한 방법은'@ Html.ActionLink' 인 것 같습니다 .. – Zeliax
네, 맞습니다. '@ Html.Action'이 .Net Core에서 삭제 된 것 같아서 대신 [ViewComponents] (https://docs.asp.net/en/latest/mvc/views/view-components.html)를 사용해야합니다. . 그러나 당신은 자신의'@Html.Action'을 구현할 수 있습니다. [여기를보세요] (http://stackoverflow.com/questions/26916664/html-action-in-asp-net-core) – dime2lo
예. 필자는 그 점에 대해서도 언급하지 않았으며, View Components에 대한 문서를 읽은 후에도이를 제공 할 것입니다. View 구성 요소는 필자가 필요로하는 것일 수 있습니다. 그 이유는 그들이 지금 계획하고있는 것입니다. P – Zeliax