![](/img/trans.png)
[英]How to null check @Html.DisplayNameFor with IEnumerable - C# & ASP.NET MVC
[英]how to format a date time variable in asp.net mvc using @HTML.DisplayNameFor
我的觀點如下:
<th>
@Html.DisplayNameFor(model => model.ReleaseDate)
</th>
我要做的就是格式化發布日期,使其采用 mm/dd/yyyy 格式。 我搜索了很多東西,但沒有遇到任何我正在尋找的東西。 任何幫助將不勝感激,我對編碼相對較新。
這是我的模型:
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; }
}
}
這是我的觀點:
@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>
您可以使用DisplayFormatAttribute實現這一點:
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; }
}
}
您的視圖強類型為IEnumerable<MvcMovie2.Models.Movie>
因此您不能像以前那樣使用 html 幫助程序。 而是將您的代碼在強類型為MvcMovie2.Modes.Movie
部分視圖中分開:
實際視圖的代碼:
@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>
Header.cshtml
部分視圖的代碼:
@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>
Movie.cshtml
部分視圖的代碼:
@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>
我讓它工作。 我所要做的就是把這個 using 子句放在我的模型中:
using System.ComponentModel.DataAnnotations;
然后我將這行代碼放在定義我的發布日期的代碼之上:
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
然后它工作得很好,我不需要改變視圖中的任何東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.