반응형
ASP.NET MVC 3 Razor 재귀 함수
좋습니다. 목록 목록이 포함 된 목록을 표시하겠습니다.
표시 할 레벨이 몇 개인 지 알 수있는 방법이 없어서 여기가 이전 재귀 루틴을 깨는 곳이라고 생각했습니다.
나는 이것에 대해 정확히 어떻게 해야하는지에 문제가 있습니다.
이것은 지금까지 내가 가진 것입니다 (보기-단순화).
@foreach(MyObject item in @Model.ListOfObjects){
<div> @item.Title </div>
//Call recursive function?
}
이제는 각 개체에 <MyObject>도 있습니다. 예를 들어 탭 들여 쓰기를 사용하여 div 아래의 각 수준을 표시하고 싶습니다.
Razor 기능이 여기서해야 할 일이라고 생각했지만 그것을 형성하는 데 약간의 도움이 필요합니다. 내 생각은 다음과 달라집니다.
@functions{
public static void ShowSubItems(MyObject _object){
if(_object.ListOfObjects.Count>0){
foreach(MyObject subItem in _object.listOfObjects){
// Show subItem in HTML
ShowSubItems(subItem);
}
}
}
}
하지만 보시다시피 도움이 필요합니다. :)
Razor보기 엔진을 사용하면 @helper
키워드를 사용하여 인라인 재귀 도우미를 사용할 수 있습니다 .
@helper ShowTree(IEnumerable<Foo> foos)
{
<ul>
@foreach (var foo in foos)
{
<li>
@foo.Title
@if (foo.Children.Any())
{
@ShowTree(foo.Children)
}
</li>
}
</ul>
}
이를 위해 HTML 도우미를 만드는 것이 가장 좋다고 생각합니다. 이 같은 :
public static string ShowSubItems(this HtmlHelper helper, MyObject _object)
{
StringBuilder output = new StringBuilder();
if(_object.ListOfObjects.Count > 0)
{
output.Append("<ul>");
foreach(MyObject subItem in _object.listOfObjects)
{
output.Append("<li>");
output.Append(_object.Title);
output.Append(html.ShowSubItems(subItem.listOfObjects);
output.Append("</li>")
}
output.Append("</ul>");
}
return output.ToString();
}
그런 다음 다음과 같이 호출하십시오.
@foreach(MyObject item in @Model.ListOfObjects){
<div> @item.Title </div>
@html.ShowSubItems(item)
}
참고 URL : https://stackoverflow.com/questions/6422895/asp-net-mvc-3-razor-recursive-function
반응형
'ProgramingTip' 카테고리의 다른 글
주어진 값이 일반 목록인지 어떻게 확인합니까? (0) | 2020.10.25 |
---|---|
Tkinter에서 대화식으로 항목 위젯 컨텐츠 유효성 (0) | 2020.10.25 |
Mac OS X에서 mongod를 중지하는 방법은 무엇입니까? (0) | 2020.10.25 |
div 클래스의 스타일 속성을 변경하는 jquery (0) | 2020.10.25 |
Python에서 가장 좋은 방법 목록을 무작위 화하는 가장 좋은 방법 (0) | 2020.10.25 |