пытаюсь отобразить вот так
var value = "[email protected]"
@Html.DisplayName(value)
Результат: только com.
Почему? что нужно использовать в этом случае
здесь я объясняю больше
Мое намерение состоит в том, чтобы отображать контент в очень общем виде с сеткой.
public class Grid
{
private Type type { get; set; }
public Grid(IEnumerable datasource)
{
if (datasource == null)
{
throw new ArgumentNullException("datasource");
}
this.type = datasource.GetType().GetGenericArguments().Single();
this.Data = datasource;
}
public IEnumerable Data { get; set; }
public IEnumerable<System.Reflection.PropertyInfo> Props
{
get
{
return this.type.GetProperties().AsEnumerable();
}
}
}
Это мой класс С# для сетки. я присваиваю значения Grid.data и с помощью viewbag я отправляю данные сетки для просмотра, а затем я использую это с частичным представлением
здесь мой частичный код просмотра
@if (Model != null)
{
<table style="width: 100%">
<thead>
<tr>
@foreach (var col in Model.Props)
{
<th>@Html.Label(col.Name)</th>
}
</tr>
</thead>
<tbody>
@foreach (var item in Model.Data)
{
<tr>
@foreach (var prop in Model.Props)
{
var val = prop.GetValue(item, null).ToString();
<td>@Html.DisplayName(val)</td>
}
</tr>
}
</tbody>
</table>
}
Наконец-то я получил ответ на это. Но я не удовлетворен тем, что для этого есть другое хорошее решение.
var val = "[email protected]";
<span>@val</span>