Mah*_*oud 0 c# asp.net-core-mvc asp.net-core
我是.net核心的新手,所以我所做的是创建标题,日期,描述,图像的文章
这是我的模特
public class Article
{
[Key]
public int Id { get; set; }
[StringLength(200)]
[Required(ErrorMessage = "Required")]
public string ArticleTitle { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime ArticleDate { get; set; }
[DataType(DataType.MultilineText)]
public string ArticleDescriotion { get; set; }
public string ArticleImage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是控制器
public IActionResult CreateArticle()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreateArticle(Article article)
{
if (ModelState.IsValid)
{
context.Articales.Add(article);
context.SaveChanges();
return RedirectToAction("Index");
}
return View(article);
}
Run Code Online (Sandbox Code Playgroud)
这是观点
<div class="form-group">
<label asp-for="ArticleDate" class="col-md-4 control-label" ></label>
<input asp-for="ArticleDate" class="form-control">
</div>
Run Code Online (Sandbox Code Playgroud)
我可以手动输入日期,它工作正常,但我希望它自动加载当前日期.
如果要使用当前DateTime加载视图,可以使用:
public class Article
{
... your current code
public Article()
{
ArticleDate = DateTime.Now;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接将模型传递给视图:
public IActionResult CreateArticle()
{
var model = new Article { ArticleDate = DateTime.Now };
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
请注意,通过使用DateTime.Now,日期可能不是客户端访问页面的日期(由于时区).如果您的用户和服务器都在同一时区,这就没问题了.如果您想要UTC日期而不是运行应用程序的服务器的日期,
您可以使用DateTime.UtcNow,但这并不总是有帮助.如果要显示每个客户端的实际日期,则需要在客户端中加载日期(即通过JavaScript).
但是,我建议您不要直接使用实体(代表表的类).查看使用ViewModels.
通过您的更新,我看到了问题所在.在LabelTagHelper(什么使您能够使用asp-for的<label>)呈现属性的描述,而不是它的价值.这是因为标签用于描述其后的内容,而不是其内容.