У меня есть рабочий процесс для писем, и я хочу показать этот рабочий процесс в 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"> </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);
}
то, что он печатает, похоже на это
будет напечатана красная линия, чего не должно быть. Я хотел контролировать узлы, которые печатаются в глобальной переменной. Но я не могу использовать любую глобальную переменную в @helper. Есть ли у вас какие-либо предложения, чтобы сделать это дерево правильно? Можно ли использовать глобальную переменную в @helper?