2012-12-17 10 views
5

के लिए विचार मैं अब के लिए निम्नलिखित उस्तरा पंक्तियाँ:ASP.NET MVC उस्तरा शीर्ष लेख और प्रत्येक स्तंभ गतिशील रूप

<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> 

हालांकि, मैं कुछ स्तंभ स्वचालित रूप से इस कार्यक्रम से डेटाबेस तालिका के लिए जोड़ देगा। मुझे इस वें और टीडी के अनुसार प्रिंट करने का एक तरीका चाहिए। संक्षेप में, मुझे मॉडल के गतिशील कॉलम के माध्यम से जाने का एक तरीका चाहिए। इसे कैसे प्राप्त किया जा सकता है?

संपादित करें: मेरा मॉडल प्रकार यहां "प्रस्ताव" है। हालांकि, मैं प्रस्ताव की गतिशील विशेषता तक पहुंचना चाहता हूं। टाइप करें। तार (टीआर, एन, या कोई अन्य जोड़ा गया भाषा Enum)। मैं कैसे कर सकता हूँ?

@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> 
} 

मैं उस्तरा स्ट्रिंग

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

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

प्राप्त कर सकते हैं मैं एक स्ट्रिंग उस्तरा सिंटेक्स के रूप में प्रदान करने की सम्मिलित कर सकते हैं? यदि हां, तो कैसे?

+0

क्या आपका विचार दृढ़ता से टाइप किया गया है? –

+0

हां या नहीं, इससे कोई फर्क नहीं पड़ता। मैं अपने प्रश्न के किसी भी कामकाजी उत्तर के अनुसार बदल सकता हूं। –

उत्तर

6

मैं इस कोड की कोशिश की है और यह

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

काम करता है अपने वर्ग के assemply योग्य नाम पाने के लिए, इस लिंक here

+1

आप रॉक! एक और बात कठिन है, आपकी कक्षा के असेंबली योग्यता नाम? उदाहरण के लिए कक्षा "भाषा" है। –

+1

मैंने अपना जवाब संपादित कर लिया है। –

+0

फिर से हैलो, क्या आप निश्चित हैं एचटीएमएल। प्रदर्शन (f.Name.ToString()) सही काम करते हैं? इसके अलावा मुझे इस विषय पर कुछ और प्रश्न मिले, सवाल संपादित किया? क्या आप एक नज़र रखना चाहते हैं? –

2

देखने के इस सवाल के पार आया, इस शायद यह किसी और में मदद मिलेगी लिखा था। यह कोड आपके मॉडल को एक तालिका में गतिशील रूप से लोड करेगा।

@model System.Collections.Generic.List<App.Client.Models.MyModel> 

<table> 
    <thead> 
     <tr> 
      @foreach (var property in Model.GetType().GetGenericArguments()[0].GetProperties()) 
      { 
       <th>@property.Name</th> 
      } 
     </tr> 
    </thead> 
    <tbody> 
     @foreach (var modelItem in Model) 
     { 
      <tr> 
       @foreach (var property in modelItem.GetType().GetProperties()) 
       { 
        <td>@property.GetValue(modelItem)</td> 
       } 
      </tr> 
     } 
    </tbody> 
</table> 
+0

बहुत बढ़िया। धन्यवाद! – Red

+0

और DisplayName() के बारे में क्या? – Romias

संबंधित मुद्दे