加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 动态地为每个列的ASP.NET MVC Razor标头和视图

发布时间:2020-12-16 07:17:06 所属栏目:asp.Net 来源:网络整理
导读:我现在有以下Razor线: table border=1 cellpadding=3 cellspacing=1 rules="rows" frame="box"tr thTürk?e S?z Dizisi/th thEnglish Word Sequence/th th/th/tr@foreach (var item in Model) {tr td @Html.DisplayFor(modelItem = item.Tr) /td td @Html.D
我现在有以下Razor线:

<table border=1 cellpadding=3 cellspacing=1 rules="rows" frame="box">
<tr>
    <th>Türk?e S?z Dizisi</th>
    <th>English Word Sequence</th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Tr)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.En)
    </td>
    <td>
        @Html.ActionLink((String)@ViewBag.Edit,"Edit",new { id=item.ID }) |
        @Html.ActionLink((String)@ViewBag.Delete,"Delete",new { id=item.ID })
    </td>
</tr>
}

</table>

但是,我会自动从程序到数据库表添加一些列.我需要一种方法来打印这个和td相应的.简而言之,我需要一种方法来浏览Model的动态列.我怎样才能做到这一点?

编辑:我的模型类型是“提案”.但是,我想要达到Proposal.Type.Word(Tr,En或任何其他添加的语言枚举)的动态属性.我怎么能够?

@foreach (var item in Model) {
    Type objectType = Type.GetType(typeof(RexamOneriSistemi.Models.Word).AssemblyQualifiedName);
    System.Reflection.PropertyInfo[] fields = objectType.GetProperties();

<tr>
    <td>@Html.DisplayFor(modelItem => item.ID)</td>
    <td>@Html.DisplayFor(modelItem => item.Owner.Name)</td>
    @foreach (System.Reflection.PropertyInfo f in fields) {
    if (f.Name.ToString() == @HttpContext.Current.Session["Language"].ToString())
    {
        <td>
         // What to do here exactly to get item.Type.Word.[dynamic attribute]?
        </td>
    }
</tr>
}

我可以得到Razor String

string s = "@Html.Displayfor(modelItem => item.Type.Word." + System.Web.HttpContext.Current.Session["Language"] + ")"

Resulting: @Html.Displayfor(modelItem => item.Type.Word.Tr)

我可以插入要呈现为Razor语法的字符串吗?如果有,怎么样?

解决方法

我试过这个代码,但它确实有效

<table border=1 cellpadding=3 cellspacing=1 rules="rows" frame="box">
    <tr>
      @{
        Type objectType = Type.GetType(typeof(yourProjectNamespace.Models.Language).AssemblyQualifiedName);


        System.Reflection.PropertyInfo[] fields = objectType.GetProperties();

         foreach (System.Reflection.PropertyInfo f in fields)
         { 

         <th> @f.Name.ToString() </th>

       }
    }

    </tr>

    @foreach (yourModelType item in Model) {
    <tr>
    foreach (System.Reflection.PropertyInfo f in fields)
         { 

         <td>@Html.Display(f.Name.ToString())</td>

         }
        <td>
            @Html.ActionLink((String)@ViewBag.Edit,new { id=item.ID }) |
            @Html.ActionLink((String)@ViewBag.Delete,new { id=item.ID })
        </td>
    </tr>
    }
            </table>

要获得课程的Assemply Qualified Name,请参阅此链接here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读