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

时间:2015-12-04 10:45:55

标签: c# asp.net-mvc entity-framework asp.net-mvc-viewmodel

我知道你可以做@ Html.DisplayForModel和ValueForModel,有什么类似的viewModel吗?我想显示我的viewmodel

中元素的所有属性名称和属性值

我的regualr ValueFor无法正常工作

到目前为止我所拥有的......虽然它不起作用:

composer require vensor/module

控制器代码:

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

}

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

2 个答案:

答案 0 :(得分:0)

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

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

        @Model.CreditCard1<br />
        @Model.CreditCardType1 <br />

这不是最有效的做事方式,但可以帮助您开始使用某些数据。

我还建议使用Model.PropertyName作为ValueFor做一个忽略任何模板的简单渲染(相当于调用String.Format)

<?php if ($_product->isSaleable() && $this->hasOptions()):?>
    <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
<?php endif;?>

<?php if ($_product->isSaleable() && $this->hasOptions()):?>
    <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
<?php endif;?>
    $_product = $this->getProduct();
    echo $_product->getName();

答案 1 :(得分:0)

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

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

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