How to lay a detailed model from the controller to the view

I am accessing Data in Controller using WCF service.

 public ActionResult Index()
        {
            DataRerieveClient _proxy = new DataRerieveClient();
            var orderDetails = _proxy.GetProductDetails(null);
            return View();
        }

Now, how to pass orderdetailsfrom Controller to view and access them in the view.

Edit:

I have a model:

 public class OrderDetails
    {
        public int OrderId { get; set; }
        public int ProductId { get; set; }
        public decimal UnitPrice { get; set; }
        public int quanity { get; set; }
        public decimal Discount { get; set; }
    }

and _proxy.GetProductDetails(null)returnsList<ServiceType.OrderDetails>

  • Do I need to use a local model in this scenario?
  • How to display List values ​​in a table in my view?

Edit2:

public class AutoMapperConfig
    {
        public static void Configure()
        {
            Mapper.Map(ServiceOrders.OrderDetails, NorthWindMVCWCF.Models.OrderDetails);
        }
    }

Now we get the error

'NorthWindMVCWCF.ServiceOrders.OrderDetails' is a type that is not valid in this context; "NorthWindMVCWCF.Models.OrderDetails" is a "type" which is invalid in this context

+4
source share
3

, :

public class OrderDetailViewModel
{
  public int OrderId { get; set; }
  public int ProductId { get; set; }
  public decimal UnitPrice { get; set; }
  public int Quanity { get; set; }
  public decimal Discount { get; set; }
}

public class OrderDetailsViewModel
{
  public OrderDetailsViewModel()
  {
      OrderDetails = new List<OrderDetailsViewModel>();
  }

  public List<OrderDetailsViewModel> OrderDetails { get; set; }
}

OrderDetails :

var orderDetailsViewModel = new OrderDetailsViewModel();
foreach(var orderdetail in orderDetails)
{
 orderDetailsViewModel.Add(new OrderDetailsViewModel { OrderId = orderDetail.OrderId, ProductId = orderDetail.ProductId, UnitPrice = orderDetail.UnitPrice, Quanity = orderDetail.quantity, Discount = orderDetail.Discount });
}

AutoMapper

AutoMapper, :

Install-Package AutoMapper

AutoMapperConfig.cs App_Start , :

public static class AutoMapperConfig
{
  public static void Configure()
  {
    Mapper.CreateMap<OrderDetails, OrderDetailViewModel>();
  }
}

asax configure:

protected void Application_Start()
{
   ...
   AutoMapperConfig.Configure();
   ...
}

:

var orderDetailsViewModel = new OrderDetailsViewModel();
orderDetailsViewModel.OrderDetails = Mapper.Map<List<OrderDetails>, List<OrderDetailsViewModel>>(orderDetails);

AutoMapper, .

:

        return View(orderDetailsViewModel);

, :

@model OrderDetailsViewModel

: OrderId, :

<table>
<tr>
<th>OrderId</th>
</tr>
@foreach(var orderDetail in Model.OrderDetails)
{
  <tr>
    <td>@orderDetail.OrderId</td>
  </tr>
}
</table>
+2

ViewModel.

, :

public class MyViewModel // Whatever name you want to give
{
     //My fields which I want to pass to View
     publis string Field1{get;set;}
     etc
     etc
}

public ActionResult Index()
{
      DataRerieveClient _proxy = new DataRerieveClient();
      var orderDetails = _proxy.GetProductDetails(null);

      List<MyViewModel> viewModelList = new List<MyViewModel>();

      foreach(var orderDetail in orderDetails)
      {
           MyViewModel viewModel = new MyViewModel(); //Create an object of your ViewModel
           viewModel.Field1 = orderDetails.Field1; //set all feilds like that      
           viewModelList.Add(viewModel); 
      }   
      return View(viewModelList); // Pass View Model to View
}

. View ViewModel

@model `List<MyViewModel>`

ViewModel .

, ViewModel, :

http://sampathloku.blogspot.ae/2012/10/how-to-use-viewmodel-with-aspnet-mvc.html

+1

:

public ActionResult Index()
{
   DataRerieveClient _proxy = new DataRerieveClient();
   var orderDetails = _proxy.GetProductDetails(null);
   return View(orderDetails);
}

, - MvcApplication2, . View (sample.cshtml):

@model MvcApplication2.Models.OrderDetail

ok, DataRecieveClient:

<div class="display-label">
     @Html.DisplayNameFor(model => model.F1)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.F1)
</div>

.!

0
source

Source: https://habr.com/ru/post/1527692/


All Articles