DateTime默认值ASP.net核心 [英] DateTime default value ASP.net core

查看:82
本文介绍了DateTime默认值ASP.net核心的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于一个学生项目,我想在日期字段(ReleaseDate)中添加默认值,但仍然具有日历和选择日期的选项.

我在Models/Post.cs中的代码:

  [显示(名称=发布日期")][DataType(DataType.Date)][DisplayFormat(ApplyFormatInEditMode = true,DataFormatString ="{0:yyyy-MM-dd}")]公共System.DateTime ReleaseDate {get;放;} 

在View/Posts/Create.cshtml中:

 < div class ="form-group">< label asp-for ="ReleaseDate" class ="control-label"></label><输入asp-for ="ReleaseDate" class ="form-control"/>< span asp-validation-for ="ReleaseDate" class ="text-danger"></span></div> 

我尝试timur,但是Controllers/PostController.cs

只能看到一个索引定义:

 公共异步任务< IActionResult>指数(){返回View(await _context.Movie.ToListAsync());} 

以及您的代码:

 公共IActionResult Index(){var model = new Post(){ReleaseDate = DateTime.Today};返回View("View",model);} 

我尝试这样写但是有一个错误(在https://localhost:numbers/Posts

视图/帖子/Create.cshtml

  @model Portal.Models.Post@ {ViewData ["Title"] =创建-";}< h1>创建</h1>< h4>发布</h4>< hr/>< div class ="row">< div class ="col-md-4">< form asp-action ="Create">< div asp-validation-summary ="ModelOnly" class ="text-danger"></div>< div class ="form-group">< label asp-for =标题" class ="control-label"></label><输入asp-for =标题" class ="form-control"/>< span asp-validation-for =标题" class ="text-danger"></span></div>< div class ="form-group">< label asp-for ="ReleaseDate" class ="control-label"></label><输入asp-for ="ReleaseDate" class ="form-control"/>< span asp-validation-for ="ReleaseDate" class ="text-danger"></span></div>< div class ="form-group">< label asp-for =说明" class ="control-label"></label><输入asp-for =说明" class ="form-control"/>< span asp-validation-for =说明" class ="text-danger"></span></div>< div class ="form-group">< input type ="submit" value ="Create" class ="btn btn-primary"/></div></form></div></div>< div>< ap-action ="Index">返回列表</a></div>@section脚本{@ {await Html.RenderPartialAsync("_ ValidationScriptsPartial");}} 

和Views/Posts/Index.cshtml

  @model IEnumerable< Portal.Models.Post>@ {ViewData ["Title"] =乔布斯-";}<!-图片->< section>< div class ="container">< div class ="full-width-image">< img src ="img/background.jpg" alt ="></div></div></section>< div class ="text-center">< h1><一个asp-action ="Create">创建新商品</a></h1></div>@foreach(模型中的var项){< section>< div class ="container"><!-标题->< div class ="my-5"></div><!-网格行->< div class ="row"><!-网格列->< div class ="col-sm-12 sm-12"><!-卡->< div class ="card">< div class ="card-header文本中心颜色">< h4>< i class ="fas fa-poll-h"></i>< a asp-action =详细信息" asp-route-id ="@ item.Id">@ Html.DisplayFor(modelItem => item.Title)</a></h4></div><!-卡片内容->< form class ="card-body">< div class ="row">< div class ="col-sm-12">< div class ="text-center">@ Html.DisplayFor(modelItem => item.Description)</div>< div class ="float-right">@ Html.DisplayFor(modelItem => item.ReleaseDate)</div></div>< div>< a asp-action =编辑" asp-route-id ="@ item.Id">编辑</a>< a asp-action =删除" asp-route-id ="@ item.Id">删除</a></div></div></form></div></div></div></div></section>} 

解决方案

正如Tieson T.在他的评论中指出的那样,您必须在剃须刀"页面的"input"标签中添加"value"属性:

 <输入asp-for ="ReleaseDate" class ="form-control" value ="@ DateTime.Today.ToString(" yyyy-MM-dd)"/> 

当然,您可以将"DateTime.Today"替换为其他内容.

您的浏览器以不同的格式显示日期没关系,您必须在value属性中使用此格式.我刚刚在ASP.NET Core 3.1 Razor应用程序中对其进行了测试,并且可以正常工作.

For a student project, I want to add default value - in the date field(ReleaseDate) but still have a calendar and the option of choosing a date.

My code in Models/Post.cs:

[Display(Name = "Release Date")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode =true, DataFormatString = "{0: yyyy-MM-dd}")]

public System.DateTime ReleaseDate { get; set; }

And in View/Posts/Create.cshtml:

<div class="form-group">
    <label asp-for="ReleaseDate" class="control-label"></label>
    <input asp-for="ReleaseDate" class="form-control" />
    <span asp-validation-for="ReleaseDate" class="text-danger"></span>
</div>

I try timur but Controllers/PostController.cs

Is see only one define of index:

 public async Task<IActionResult> Index()
        {
            return View(await _context.Movie.ToListAsync());
        }

And your code:

public IActionResult Index()
{
    var model = new Post()
    {
        ReleaseDate = DateTime.Today
    };

    return View("View", model);
}

I try to put like that But there is an error (on https://localhost:numbers/Posts

Views/Posts/Create.cshtml

@model Portal.Models.Post

@{
    ViewData["Title"] = "Create -";
}


<h1>Create</h1>

<h4>Post</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Title" class="control-label"></label>
                <input asp-for="Title" class="form-control" />
                <span asp-validation-for="Title" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="ReleaseDate" class="control-label"></label>
                <input asp-for="ReleaseDate" class="form-control" />
                <span asp-validation-for="ReleaseDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Description" class="control-label"></label>
                <input asp-for="Description" class="form-control" />
                <span asp-validation-for="Description" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

And Views/Posts/Index.cshtml

@model IEnumerable<Portal.Models.Post>

@{
    ViewData["Title"] = "Job Rice -";
}

<!-- Image -->
<section>
    <div class="container">
        <div class="full-width-image">
            <img src="img/background.jpg" alt="">
        </div>
    </div>
</section>





<div class="text-center">
<h1><a asp-action="Create">Create new offer</a></h1>
    </div>


        @foreach (var item in Model)
        {
<section>
    <div class="container">
        <!-- Heading -->
        <div class="my-5"> </div>
        <!-- Grid row -->
        <div class="row">
            <!-- Grid column -->
            <div class="col-sm-12 sm-12">
                <!-- Card -->
                <div class="card">
                    <div class="card-header text-center colores">
                        <h4> <i class="fas fa-poll-h"></i> <a asp-action="Details" asp-route-id="@item.Id"> @Html.DisplayFor(modelItem => item.Title) </a></h4>
                    </div>
                    <!-- Card content -->
                    <form class="card-body">
                        <div class="row">
                            <div class="col-sm-12">
                                <div class="text-center"> @Html.DisplayFor(modelItem => item.Description)</div>
                                <div class="float-right"> @Html.DisplayFor(modelItem => item.ReleaseDate)</div>
                            </div>
                            <div>
                                <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> 
                                <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</section>
}

解决方案

As Tieson T. points in his comment, you have to add the "value" attribute to the "input" tag in your razor page:

<input asp-for="ReleaseDate" class="form-control" value="@DateTime.Today.ToString("yyyy-MM-dd")" />

Of course, you can replace "DateTime.Today" with something else.

It doesn't matter that your browser shows the date in different format, you have to use this one inside the value attribute. I just tested it in an ASP.NET Core 3.1 Razor app and it works.

这篇关于DateTime默认值ASP.net核心的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆