C# 如何在视图中显示ViewModel的所有元素

C# 如何在视图中显示ViewModel的所有元素,c#,asp.net-mvc,entity-framework,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc Viewmodel,我知道你可以做@Html.DisplayForModel和ValueForModel,有没有类似的viewModel?我想显示viewmodel中元素的所有属性名称和属性值 我的定期估价也不起作用 以下是我到目前为止所做的……尽管它不起作用: @model BookStore.ViewModels.CheckOutViewModel @using (Html.BeginForm()) { <h2>Checkout Summary</h2>

我知道你可以做@Html.DisplayForModel和ValueForModel,有没有类似的viewModel?我想显示viewmodel中元素的所有属性名称和属性值

我的定期估价也不起作用

以下是我到目前为止所做的……尽管它不起作用:

@model BookStore.ViewModels.CheckOutViewModel       
 @using (Html.BeginForm())
{
    <h2>Checkout Summary</h2>
    <fieldset>
        <legend>Payment Information</legend>

        @Html.ValueFor(m => m.CreditCard1)<br />
        @Html.ValueFor(m => m.CreditCardType1) <br />

        @Html.DisplayNameFor(Model => Model.CreditCard1)
        @Html.DisplayFor(Model => Model.CreditCard1)
        @Html.
    </fieldset>

    <fieldset>
        <legend>Shipping Information</legend>
        @Html.ValueForModel()
    </fieldset>

}

编辑:我想我真正的问题是如何从我的视图模型中获取任何属性以显示其值

如果你真的是新手,你可以这样做:

public ActionResult Complete(int? id)
{
    if(int != null && int != 0){ //Makes sure int isn't empty or 0
       var allModelData = dataContext(); //Get all the data in your dataContext
       var myModel = allModelData.FirstOrDefault(x => x.id == id); //This gets the 
                                                            //model that matches the ID
       CheckOutViewModel viewModel = myModel; //Populate it into your viewmodel
       return View(viewModel); //Return your viewmodel
    }
    return View();
}
这不是最有效的做事方式,但可以让您从一些数据开始

我还建议将Model.PropertyName用作忽略任何模板的简单呈现的值(相当于调用String.Format)

@Model.CreditCard1
@Model.CreditCardType1

编辑:查看控制器,您只是返回一个整数,而不是您的模型

如果你真的是新手,你可以这样做:

public ActionResult Complete(int? id)
{
    if(int != null && int != 0){ //Makes sure int isn't empty or 0
       var allModelData = dataContext(); //Get all the data in your dataContext
       var myModel = allModelData.FirstOrDefault(x => x.id == id); //This gets the 
                                                            //model that matches the ID
       CheckOutViewModel viewModel = myModel; //Populate it into your viewmodel
       return View(viewModel); //Return your viewmodel
    }
    return View();
}
这不是最有效的做事方式,但可以让您从一些数据开始

我还建议将Model.PropertyName用作忽略任何模板的简单呈现的值(相当于调用String.Format)

@Model.CreditCard1
@Model.CreditCardType1

您正在向视图传递对象(模型)的Id,而不是模型本身。您的控制器中应该有这样的东西:

public ActionResult Complete(int? id)
{    
     CheckOutViewModel model = GetModel(id);
     return View(model);
}

其中GetModel是一个函数,您可以根据id检索CheckOutViewModel。

您将对象(模型)的id传递给视图,而不是模型本身。您的控制器中应该有这样的东西:

public ActionResult Complete(int? id)
{    
     CheckOutViewModel model = GetModel(id);
     return View(model);
}


其中GetModel是根据id检索CheckOutViewModel的函数。

对不起,我没有意识到行没有被复制,视图模型已经包含在内:/那么问题出在哪里?对不起,我没有意识到行没有被复制,视图模型已经包含在内:/n那么问题出在哪里?您可以从控制器发布代码吗?似乎您没有将模型传递给view.posted,现在我了解了您的意思,但通常情况下,GET方法只是返回view()?它只返回一个整数,而不是您期望的视图模型,您的return语句应该类似于return视图(您的视图模型对象);你能从你的控制器上传代码吗?似乎您没有将模型传递给view.posted,现在我了解了您的意思,但通常情况下,GET方法只是返回view()?它只返回一个整数,而不是您期望的视图模型,您的return语句应该类似于return视图(您的视图模型对象);我们将在get模型中输入什么类型的逻辑?对不起,我从来没有写过这种类型的东西取决于你用的是什么?您将数据存储在何处,以及希望在视图中显示什么?所有数据都存储在azure数据库中,我在dataContext类(DAL)中启动该数据库;在视图中,我们希望显示已完成订单的摘要(my viewmodel中的所有字段都对应),然后您应该调用dataContext类来获取要显示的数据并将其放入模型中。而不是把模型传给观景台。嘿,弗雷迪,我介意和MVC聊天吗?我和我的小组在一次写出我们的问题时遇到了困难:我们应该在get模型中输入什么类型的逻辑?对不起,我从来没有写过这种类型的东西取决于你用的是什么?您将数据存储在何处,以及希望在视图中显示什么?所有数据都存储在azure数据库中,我在dataContext类(DAL)中启动该数据库;在视图中,我们希望显示已完成订单的摘要(my viewmodel中的所有字段都对应),然后您应该调用dataContext类来获取要显示的数据并将其放入模型中。而不是把模型传给观景台。嘿,弗雷迪,我介意和MVC聊天吗?我和我的小组在一次写出我们的问题时遇到了困难