2015-12-04 8 views
1

Я знаю, что вы можете делать @ Html.DisplayForModel и ValueForModel, есть ли что-то похожее в viewModel? Я хочу, чтобы отобразить все имена свойств и значения свойств элементов в моей ViewModelКак показать все элементы ViewModel в представлении

Мой regualr ValueFor не работает либо

Вот что я до сих пор ... хотя, ее не работает:

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

} 

Controller Код:

public ActionResult Complete(int? id) 
{ 
    return View(id); 
} 

Edit: Я думаю, мой вопрос в том, как получить ЛЮБУЮ собственность от моей точки зрения модели, чтобы показать его значение

+0

Можете ли вы опубликовать код с вашего контроллера? Похоже, вы не передаете модель взгляду. – FreddieH

+0

, теперь, когда я смотрю на это, я как бы понимаю, что вы имеете в виду, но обычно методы GET возвращают View()? – Parth

+0

, возвращающее только целое число, а не модель представления, которую вы ожидаете, оператор return должен выглядеть как return View (ваш объект модели объекта); – Rex

ответ

0

EDIT: Глядя на геймпаде вы просто возвращаете целое число, не модель

Вы могли бы сделать что-то вроде этого, если вы действительно новичок в этом:

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, как ValueFor делает простую визуализацию, который игнорирует любые шаблоны (эквивалент вызывающей String.Format)

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

Извините, я не понял, что строка не была скопирована, модель просмотра уже включена:/ – Parth

+0

Так в чем же проблема? – hjardine

+0

ничего не отображается – Parth

0

Вы пропускание идентификатора объекта (модель) в ваш взгляд вместо самой модели. Вы должны иметь Somthing как это в вашем контроллере:

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

Где GetModel некоторая функция, где вы извлекаете CheckOutViewModel на основе идентификатора.

+0

Какой тип логики мы будем вводить в модель? Извините, ive никогда не писал ничего такого типа – Parth

+0

Зависит от того, что вы используете? Где вы храните свои данные и что вы хотите показать в представлении? – FreddieH

+0

все данные хранятся в базе данных azure, я инициирую это в классе dataContext (DAL); В представлении мы хотим показать сводку завершенного ордера (все поля в моей модели viewmodel соответствуют) – Parth

Смежные вопросы