Проблема в создании дерева с рекурсивом в ASP.NET MVC @helper - PullRequest
0 голосов
/ 28 октября 2019

У меня есть рабочий процесс для писем, и я хочу показать этот рабочий процесс в MVC, поэтому моя таблица выглядит следующим образом

  ID    LetterId    user_sender_Id      user_receiver_Id   Subject
 ------------------------------------------------------------------
  10      101           5                  1001              Test1
  11      101           1001               87                Test2
  12      101           1001               165               Test2
  13      101           1001               5                 Test2
  14      101           5                  1001              Test3

Я запрограммировал частичное представление и помощник, чтобы показать это представление дерева

Это частичное представление

@model WebECartable.ViewModels.ReferrListViewModel
<div  style="height:90%; overflow:auto;">       
@if (Model.ReferrClass != null && Model.ReferrClass.Count() > 0)
{
   <input type="text" id="refIdListTextBox" value="@ViewBag.refIdList" />
   <ul id="ulTreeview">
       @ReferrList.GetReferrList(Model.ReferrClass,  0, Model.ParentReferrId)
   </ul>
 }   
</div>

Это обычный помощник для того, кто использует рекурсив для создания Treeview

@helper GetReferrList(List<WebECartable.ViewModels.ReferrClass> refList, long parentIdKey, short? parentID)
{
  foreach (var i in folder.Where(a => a.user_sender_Id.Equals(parentID)))
  {     
    if (i.Id > parentIdKey)
    {
        <li >
            @{
              var submenu = folder.Where(a => a.user_sender_Id.Equals(i.user_receiver_Id)).Count();}
            <span class=" collapse collapsible">&nbsp;</span>                           
            <span>
                @i.user_sender_Name => @i.user_receiver_Name : @i.subject
            </span>
            @if (submenu > 0)
            {
                <ul>
                    @ReferrList.GetReferrList(refList,  i.Id, i.user_receiver_Id)
                </ul>
            }
        </li>
   }
 }
}

, а это контроллер

  public ActionResult ReferenceList(int Letter_Id)
    {            
        ReferrClass referring = new ReferrClass();
        List<ReferrClass> referrClass = new List<ReferrClass>();
        ReferrListViewModel referrListViewModel = new ReferrListViewModel();
        using (WebECartableEntities dc = new WebECartableEntities())
        {                
            referrListViewModel.ParentReferrId = dc.Letters.Where(x => x.ID == Letter_Id).SingleOrDefault().usr_Register__Id;                
            referrClass =dc.Referrings.Where(x => x.Letter_Id == Letter_Id && x.usr_Receiver__Id!=x.usr_Sender__Id).Select(x => new ReferrClass
            {
                Id=x.ID,
                user_receiver_Id = x.usr_Receiver__Id,
                user_sender_Id = x.usr_Sender__Id,
                user_receiver_Name = x.C_User.LastName + " " + x.C_User.FirstName,
                user_sender_Name = x.C_User1.LastName + " " + x.C_User1.FirstName,                    
                subject=x.Subject

            }).ToList();
            referrListViewModel.ReferrClass = referrClass;             

        }
            return PartialView("_PartialReferenceList", referrListViewModel);
    }

то, что он печатает, похоже на это enter image description here

будет напечатана красная линия, чего не должно быть. Я хотел контролировать узлы, которые печатаются в глобальной переменной. Но я не могу использовать любую глобальную переменную в @helper. Есть ли у вас какие-либо предложения, чтобы сделать это дерево правильно? Можно ли использовать глобальную переменную в @helper?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...