2011-12-19 12 views
1

MVCビューでは、いくつかの変数の値を表示/表示する必要があります。どうすればこれを行うことができます。..MVCビューの変数リストを表示

public ActionResult DisplayVariables() 
    { 
     ViewBag.Message = "Welcome to ASP.NET MVC!";   
     {    
      //After some process/logic.. variables get assigned values here.. 
       int var1 = xxxxxx; 
       int var2 = xxxxx; 
       int var3 = xxxxxx; 
       int var4 = xxxxx;  
     } 
     return View() //I want to display variables values with lables here in this 
         //view. I already have a view with name "DisplayVariables" 
    } 
+0

'Dictionary をビューに送り、それを反復処理しますか?あるいは、リフレクションを使用してプロセスを自動化します( 'ViewBag'からプロパティを取り除くだけであると仮定します) –

+0

あなたのビュー定義を表示できますか? –

+0

下記の私の答えをご覧ください。 – ZVenue

答えて

0

私はこれを行うためにexpandoオブジェクトを使用しました。このソリューションは、私のために動作するようです。..です..私は

<h2><%=Model.var1%></h2> 

方法を持っている...

public ActionResult DisplayVariables() 
{ 
    ViewBag.Message = "Welcome to ASP.NET MVC!";  

    dynamic Model = new ExpandoObject(); 

    {    
     //After some process/logic.. variables get assigned values here.. 

      int var1 = xxxxxx; 
      int var2 = xxxxx; 
      int var3 = xxxxxx; 
      int var4 = xxxxx; 

      Model.var1 = var1; 
      Model.var2 - var2; 
      Model.var3 = var3; 
      Model.var4 - var4; 
    } 

    return View(Model) //I want to display variables values with lables here in this 
        //view. I already have a view with name "DisplayVariables" 
} 

とビューの下に私の応答を参照してください。

4

あなたが何か

@ViewBag.Message.var1 

などを行うことによってビューにこれを行うことができますしかしビューモデルを作成する方がよいとあなたのビューにそれを渡します。

+0

ありがとうございました。それはどうですか? – ZVenue

0

強く型付けされたビュー、ビューモデル、およびデータを作成する方法の非常に基本的な例を次に示します。

ビューモデルを定義します。

namespace MyNameSpace.ViewModels 
{ 
    public class MyViewModel 
    { 
     public string Var1; 
     public string Var2; 
     public string Var3; 
    } 
} 

は、あなたのコントローラでそれを読み込む:

public ActionResult DisplayVariables() 
{ 
    var model = new MyViewModel 
    { 
     Var1 = "Foo", 
     Var2 = "Bar", 
     // ... 
    } 

    return View(model); 
} 

最後に、(DisplayVariables.cshtmlに)あなたのビューでモデルを宣言

@* Note the small 'm' here. You'll probably need to 
    put a namespace in front of the type name as well. *@ 
@model MyNameSpace.ViewModels.MyViewModel 

@Model.Var1<br /> 
@Model.Var2<br /> 
-1

をさて、少し古い投稿ですが、他の人に時間を節約することができます。 私はプロパティ

@using System.Reflection; 
@{ 
    Object l_o = ViewBag.ObjectToDisplay; 
} 
<style type="text/css"> 
    table,th,td 
    { 
     border:1px solid green; 
     border-collapse:collapse; 
     padding:3px; 
    } 
    th 
    { 
     background-color:green; 
     color:white; 
    } 
    #display-title 
    { 
     font-size:large; 
     color:green; 
    } 
</style> 
<div> 
    <div id="display-title">@l_o.GetType().Name</div> 
    <table> 
    <tr> 
     <th>Property</th> 
     <th>Value</th> 
    </tr> 

    @foreach (PropertyInfo l_info in l_o.GetType().GetProperties()) 
    { 
     <tr> 
      <td> 
       <div class="display-label" style="text-align: right;"> 
        @l_info.Name 
       </div> 
      </td> 
      <td> 
       <div class="display-value"> 
        @l_info.GetValue(l_o, null) 
       </div> 
      </td> 
     </tr> 
    } 
    </table> 
</div> 

を表示するためにリフレクションを使用する部分図をオブジェクトに行わそれから私はあなたのコントローラにViewBag.ObjectToDisplayを設定することを忘れないでください

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <title>Register</title> 
</head> 
<body> 
    @Html.Partial("ObjectPropertiesView") 
</body> 
</html> 

としてこれを使用します。

関連する問題