2016-05-05 5 views
-2

Ich habe diese Aussage in meiner Ansicht, dass wie folgt:wie ein Datum Zeitvariable in asp.net MVC-Format @ HTML.DisplayNameFor

<th>   
    @Html.DisplayNameFor(model => model.ReleaseDate) 
</th> 

alles, was ich bin versucht, Format des Release-Datum zu tun ist, so dass es im Format von MM/TT/JJJJ sein wird. Ich habe Ladungen durchsucht und bin nicht auf etwas gestoßen, das genau das ist, wonach ich suche. Jede Hilfe würde sehr geschätzt werden, ich bin relativ neu in der Codierung.

Hier ist mein Modell:

using System; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity; 

namespace MvcMovie2.Models 
{ 
    public class Movie 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public DateTime ReleaseDate { get; set; } 
     public string Genre { get; set; } 
     public string Rating { get; set; } 
     public decimal Price { get; set; } 
    } 

    public class MovieDBContext : DbContext 
    { 
     public DbSet<Movie> Movies { get; set; } 
    } 

    public class DummyModel : Movie 
    { 
     [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 
     public DateTime ReleaseDate { get; set; } 
    } 
} 

und hier ist meine Ansicht:

@model IEnumerable<MvcMovie2.Models.Movie> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.Title) 
     </th> 
     <th>   
      @Html.DisplayFor(model => model.ReleaseDate) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Genre) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Rating) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Price) 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Title) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ReleaseDate) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Genre) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Rating) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Price) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | 
      @Html.ActionLink("Details", "Details", new { id=item.ID }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.ID }) 
     </td> 
    </tr> 
} 

</table> 
+0

Bitte teilen Sie Ihr Modell –

+0

'DisplayNameFor()' gibt den Eigenschaftsnamen (oder das Ergebnis eines 'DisplayAttribute'. Hast du' @ Html.DisplayFor() '? –

+0

@ Html.DisplayFor (Modell => Modell bedeuten. ReleaseDate) In der obigen Zeile muss das Datum in MM/TT/JJJJ formatiert werden –

Antwort

1

Sie, dass mit der DisplayFormatAttribute erreichen können:

using System; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity; 

namespace MvcMovie2.Models 
{ 
    public class Movie 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 
     public DateTime ReleaseDate { get; set; } 
     public string Genre { get; set; } 
     public string Rating { get; set; } 
     public decimal Price { get; set; } 
    } 

    public class MovieDBContext : DbContext 
    { 
     public DbSet<Movie> Movies { get; set; } 
    } 
} 

Ihre Ansicht stark typisiert IEnumerable<MvcMovie2.Models.Movie> daher können Sie den HTML-Helfer nicht wie Sie verwenden. Statt den Code in Teilansichten trennen, die stark an MvcMovie2.Modes.Movie Typen sind:

-Code für die aktuelle Ansicht:

@model IEnumerable<MvcMovie2.Models.Movie> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    @Html.Partial("Header") 
    @foreach (var item in Model) 
    { 
     @Html.Partial("Movie", item) 
    } 
</table> 

-Code für die Header.cshtml Teilansicht:

@model MvcMovie2.Models.Movie 

<tr>  
    <th> 
     @Html.DisplayNameFor(model => model.Title) 
    </th> 
    <th>   
     @Html.DisplayNameFor(model => model.ReleaseDate) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Genre) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Rating) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Price) 
    </th> 
    <th></th> 
</tr> 

-Code für den Movie.cshtml Teil Ansicht:

@model MvcMovie2.Models.Movie 

<tr>   
    <td> 
     @Html.DisplayFor(modelItem => item.Title) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.ReleaseDate) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Genre) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Rating) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Price) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | 
     @Html.ActionLink("Details", "Details", new { id=item.ID }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.ID }) 
    </td> 
</tr> 
+0

Ich lege die Klassendeklaration in meinen Controller, aber es gibt mir einen Fehler, dass ich eine Referenz auf dem DateFormatString vermisse.Ich habe gesucht, aber ich kann nichts in Bezug finden zu dem, das an der Spitze der Controller-Datei enthalten sein sollte Vorschläge? –

+0

Fügen Sie einen Verweis auf dem System.ComponentModel.Da hinzu taAnnotations-Assembly in Ihr Projekt und fügen Sie dem Namespace dann eine using-Anweisung hinzu. –

+0

Ich denke, es gibt etwas zwischen der Verwendung von DisplayFor und DisplayNameFor. Die Verwendung von DisplayFor verursacht einen Compilerfehler, der besagt, dass meine Klasse keine Definition für ReleaseDate enthält, und die Verwendung von DisplayNameFor lässt das Programm nicht so funktionieren, wie ich es möchte. Soll es auch DateFormatString oder DataFormatString sein? DateFormatString wird nicht kompiliert, aber der andere tut es. –

0

Ich habe es t o Arbeit. Alles, was ich tun musste, war dies mit Klausel in meinem Modell setzen:

using System.ComponentModel.DataAnnotations; 

dann habe ich diese Codezeile über meinem Code, der mein Veröffentlichungsdatum definiert:

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 

und dann funktionierte es perfekt, Ich musste nichts in der Ansicht ändern.