Asp.net mvc 在MVC视图中显示变量列表

Asp.net mvc 在MVC视图中显示变量列表,asp.net-mvc,asp.net-mvc-3,view,Asp.net Mvc,Asp.net Mvc 3,View,我必须在MVC视图中打印/显示几个变量的值。我该怎么做 public ActionResult DisplayVariables() { ViewBag.Message = "Welcome to ASP.NET MVC!"; { //After some process/logic.. variables get assigned values here..

我必须在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"
    }

您可以在视图中执行以下操作

@ViewBag.Message.var1

不过,最好创建一个视图模型并将其传递给视图。

我使用expando对象来实现这一点。请看下面我的回答

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"
}
在我看来。。我有

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


这个解决方案怎么样。。似乎对我有用。

为了完整起见,这里有一个非常基本的示例,说明如何创建强类型视图、视图模型和传递数据

定义视图模型:

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

@*注意这里的小“m”。你可能需要
在类型名称前面也放一个名称空间*@
@模型MyNameSpace.ViewModels.MyViewModel
@Model.Var1
@Model.Var2

嗯,这篇文章现在有点老了,但它可以为其他人节省时间。 我做了一个局部视图,它使用反射来显示对象属性

@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>
@使用System.Reflection;
@{
Object l_o=ViewBag.ObjectToDisplay;
}
表,th,td
{
边框:1px纯绿色;
边界塌陷:塌陷;
填充:3倍;
}
th
{
背景颜色:绿色;
颜色:白色;
}
#显示标题
{
字体大小:大号;
颜色:绿色;
}
@l_o.GetType().Name
财产
价值
@foreach(l_o.GetType().GetProperties()中的PropertyInfo l_info)
{
@l_info.Name
@l_info.GetValue(l_o,null)
}
然后我用这个作为

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Register</title>
</head>
<body>
    @Html.Partial("ObjectPropertiesView") 
</body>
</html>
@{
布局=空;
}
登记
@Html.Partial(“ObjectPropertiesView”)

不要忘记将ViewBag.ObjectToDisplay设置为在控制器中显示。

向视图发送
词典
,并对其进行迭代?或者可能使用反射和自动化过程(假设您只是从
视图包
中剥离属性),您可以显示视图定义吗?请参见下面我的答案。。谢谢,请看我提出的解决方案。看起来怎么样?
@{
    Layout = null;
}

<!DOCTYPE html>

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