2017-03-17 9 views
0

私は今、かなりダムを感じています。リストに強く入力されたビューがありますが、このリストが最後に更新された日付も表示したいと考えています。リストと単一の変数を含むビューを返す

コントローラは

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Infotech.Coverpools.Portal.Tintaglia.CodeFirst.Models; 

namespace Infotech.Coverpools.Portal.Tintaglia.Web.Controllers 
{ 
    public class CustLedgerEntryController : Controller 
    { 
     private TintagliaContext db = new TintagliaContext(); 

     // 
     // GET: /CustLedgerEntry/ 

     public ActionResult AccountHistory() 
     { 

      //UserProfile userprofile = db.UserProfiles.FirstOrDefault(u => u.UserName.Equals(User.Identity.Name)); 

      IEnumerable<CustLedgerEntry> ListCustLedgerEntries; 
      { 
       ListCustLedgerEntries = db.CustLedgerEntries.ToList(); 
      } 

      return View(ListCustLedgerEntries); 
     } 

これは私が表示したい日付のコードです(私はListCustLedgerEntriesの内側に追加しようとしたが、私はそれが間違っていた知っていました)。

 var datetoweb = db.CustLedgerEntries.FirstOrDefault(m => m.DatetoWebSales != null); 

は、ここで私が言ったように、私はこれは簡単なはず知っている私の見解

@model IEnumerable<Infotech.Coverpools.Portal.Tintaglia.CodeFirst.Models.CustLedgerEntry> 

@using GridMvc.Html 

@{ 
    ViewBag.Title = "Account History"; 
    } 


<h2>Account History</h2> 
@*<link href="~/Content/Gridmvc.css" rel="stylesheet" /> 
<link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
<script src="~/Scripts/jquery-1.9.1.min.js"></script>*@ 


@Html.Grid(Model).Columns(columns => 
{ 
    columns.Add(m => m.CustomerNo_).Titled("Account #").Filterable(true); 
    columns.Add(m => m.PostingDate).Format("{0:dd/MM/yyyy}").SetWidth(100).Titled("Order Date").Filterable(true); 
    columns.Add(m => m.DocumentType).Titled("Type").Filterable(true); 
    columns.Add(m => m.DocumentNo_).Titled("Document #").Filterable(true); 
    columns.Add(m => m.Description).Titled("Description").SetWidth(300).Filterable(true); 
    columns.Add(m => m.ExternalDocumentNo_).Titled("Memo").SetWidth(300).Filterable(true); 
    columns.Add(m => m.Amount).Format("{0:$#,###.00}").Titled("Amount").SetWidth(200).Filterable(true); 
    columns.Add(m => m.RemainingAmount).Format("{0:$#,###.00}").SetWidth(100).Titled("Remaining Amount").Filterable(true); 
    columns.Add(m => m.DueDate).Format("{0:dd/MM/yyyy}").Titled("Due Date").Filterable(true); 
}).WithPaging(20).Sortable(true) 

This is accurate as of //This is where I want the Date 

です。これを行う上での助けと私が見つけたよりも良いチュートリアルがあれば大歓迎です。

答えて

1

あり、それを行うためのさまざまな方法は、ある一つは、あなたのGETアクションで今2つのプロパティ、レコードとLastUpdatedDate

public classs AccountHistoryVm 
{ 
    public IEnumerable<CustLedgerEntry> Records { set;get;} 
    public DateTime? LastUpdatedDate { set;get;} 
} 

を持つ新しいビューモデルを作成し、こののオブジェクトを作成し、関連を設定することですプロパティとは

public ActionResult AccountHistory() 
{ 
    var vm = new AccountHistoryVm(); 
    vm.Records= db.CustLedgerEntries.ToList(); 
    var d= db.CustLedgerEntries.FirstOrDefault(m => m.DatetoWebSales != null); 
    id(d!=null) 
    { 
    vm.LastUpdateDate == d.DatetoWebSales; //Assuming DatetoWebSales is of DateTime type. 
    } 
    return View(vm); 
} 

はあなたのビューが今強く、この新しいビューモデル

@model AccountHistoryVm 
@if(Model.LastUpdatedDate!=null) 
{ 
    <p>This is accurate as of @Model.LastUpdatedDate.Value.ToString() </p> 
} 
// Use Model.Records property to build the grid 
に入力されていることを確認してください表示され送ります

もう一つのオプションは、ViewBagを使用してデータを渡すことです。

+0

私はViewBagを試みましたが、日付の代わりに "これはInfotech.Coverpools.Portal.Tintaglia.CodeFirst.Models.CustLedgerEntryの時点で正確です"という結果が表示されます。私のビューに 'ViewBag.datetoweb = db.CustLedgerEntries.FirstOrDefault(m => m.DatetoWebSales!= null);'をListCustLegerEntries内に、そして '@ ViewBag.datetoweb'を追加しました。 VMソリューションを試してみますが、なぜこの結果が得られますか? –

+0

ありがとうございます。ビューモデルが機能しました。 ViewBagがなぜデータの代わりにパスを返すのかまだ分かりません。私は 'var datetoweb = db.CustLedgerEntries.FirstOrDefault(m => m.DatetoWebSales!= null);を行った。 nullのidチェックではなく、 vm.LastUpdatedDate = datetoweb.DatetoWebSales;および '@ Model.LastUpdateDate'を実行します。 –

関連する問題