Я делаю документацию схемы MS SQL и хочу отобразить ее в приложении ASP. NET MVC. У меня есть схема, выведенная в файл XML.
Есть ли способ добавить несколько списков одновременно, чтобы они отображались рядом. Примерно так:
Вместо:
my_table
Col1
Col2
1
2
XML Файл
<test>
<sys.tables TableName="table">
<sys.columns Name="Col1" Position="1" Data_Type="NVARCHAR" />
<sys.columns Name="Col2" Position="2" Data_Type="NVARCHAR" />
</sys.tables>
</test>
Я читаю из него в приложении. NET.
Модель
public class DocModel
{
public string TableName { get; set; }
public List<string> ColumnNames { get; set; }
public List<string> ColumnPosition { get; set; }
}
Я планирую добавить намного больше столбцов для отображения.
Контроллер
public IActionResult Index() {
List<DocModel> documents = new List<DocModel>();
XDocument doc = XDocument.Load(@"Schema.xml");
string tableName = "";
List<string> columnNames = new List<string>();
List<string> columnPosition = new List<string>();
foreach (XElement Tables in doc.Descendants("test")) {
foreach (XElement Table in Tables.Descendants("sys.tables")) {
foreach (XAttribute Column in Table.Descendants("sys.columns").Attributes()) {
if (Column.Name == "Name") {
columnNames.Add(Column.Value);
} else if (Column.Name == "Position") {
columnPosition.Add(Column.Value);
}
}
documents.Add(new DocModel {
TableName = Table.Attribute("TableName").Value,
ColumnNames = columnNames,
ColumnPosition = columnPosition
});
}
}
return View(documents);
}
Просмотр
@model IEnumerable<DocModel>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@foreach (DocModel doc in Model) {
<h2>@doc.TableName</h2>
@foreach (var col in doc.ColumnNames) {
<p>@col</p>
}
@foreach (var col in doc.ColumnPosition) {
<p>@col</p>
}
}
</body>
</html>
Извините за длинный пост, любая помощь очень ценится.