在 ASP.NET MVC 中存储来自 3 DropDownListFor(日、月、年)的 DateTime
Store DateTime from 3 DropDownListFor (day, month, year) in ASP.NET MVC
我正在尝试使用 ASP.NET MVC 将 DateTime 对象存储到我的 SQL 数据库中。
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "-- Select Day --")
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "-- Select Year --")
@Html.ValidationMessageFor(model => model.ModifiedDate, "", new { @class = "text-danger" })
我分别使用三 (3) 个 DropDownListFor 日、月和年。
有没有一种方法可以成功地将每个下拉列表中的所有 3 个输入存储为一个日期存储在我的 ModifiedDate 列中?
您可以创建一个包含日、月和年三个 属性 的模型,并在您的视图中设置它们的值。之后,您可以使用这些值创建 DateTime 属性 并将其存储在数据库中。
这里是DateModel.cs:
public class DateModel
{
public int Year { get; set; }
public int Month { get; set; }
public int Day { get; set; }
public DateTime ModifiedDate
{
get
{
return new DateTime(this.Year, this.Month, this.Day, 0, 0, 0);
}
}
}
我更改了您的视图代码以获取月数而不是月名,请参阅以下行:
@Html.DropDownListFor(model => model.Month, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
这是视图的代码:
@using (Html.BeginForm("Operate", "Test", FormMethod.Post))
{
@Html.DropDownListFor(model => model.Day, Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Day --")
@Html.DropDownListFor(model => model.Month, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
@Html.DropDownListFor(model => model.Year, Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Year --")
<button type="submit">Operate</button>
}
您可以使用此代码。使用脚本,您可以验证客户的日期。
@Html.DropDownList("Day", Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Day --",new { @class="myDate"})
@Html.DropDownList("Month", Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --", new { @class = "myDate" })
@Html.DropDownList("Year", Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Year --", new { @class = "myDate" })
<br />
@Html.TextBoxFor(model=>model.ModifiedDate, new { @readonly=true, style="background:#888;color:white;text-align:center;border:1px solid #ddd"})
@Html.ValidationMessageFor(model => model.ModifiedDate, "", new { @class = "text-danger" })
脚本
@section scripts{
<script>
var day = document.getElementById("Day");
var month = document.getElementById("Month");
var year = document.getElementById("Year");
var ModifiedDate = document.getElementById("ModifiedDate");
ModifiedDate.value = '0000-00-00';
$('.myDate').on('change', function () {
var d, m, y;
if (day.selectedIndex > 0)
d = day.options[day.selectedIndex].text;
else
d = "00";
if (month.selectedIndex > 0)
m = month.options[month.selectedIndex].text;
else
m = "00";
if (year.selectedIndex > 0)
y = year.options[year.selectedIndex].text;
else
y = "0000";
var date = y + '-' + m + '-' + d;
ModifiedDate.value = date;
});
</script>
}
我正在尝试使用 ASP.NET MVC 将 DateTime 对象存储到我的 SQL 数据库中。
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "-- Select Day --")
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
@Html.DropDownListFor(model => model.ModifiedDate, Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "-- Select Year --")
@Html.ValidationMessageFor(model => model.ModifiedDate, "", new { @class = "text-danger" })
我分别使用三 (3) 个 DropDownListFor 日、月和年。
有没有一种方法可以成功地将每个下拉列表中的所有 3 个输入存储为一个日期存储在我的 ModifiedDate 列中?
您可以创建一个包含日、月和年三个 属性 的模型,并在您的视图中设置它们的值。之后,您可以使用这些值创建 DateTime 属性 并将其存储在数据库中。
这里是DateModel.cs:
public class DateModel
{
public int Year { get; set; }
public int Month { get; set; }
public int Day { get; set; }
public DateTime ModifiedDate
{
get
{
return new DateTime(this.Year, this.Month, this.Day, 0, 0, 0);
}
}
}
我更改了您的视图代码以获取月数而不是月名,请参阅以下行:
@Html.DropDownListFor(model => model.Month, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
这是视图的代码:
@using (Html.BeginForm("Operate", "Test", FormMethod.Post))
{
@Html.DropDownListFor(model => model.Day, Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Day --")
@Html.DropDownListFor(model => model.Month, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --")
@Html.DropDownListFor(model => model.Year, Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Year --")
<button type="submit">Operate</button>
}
您可以使用此代码。使用脚本,您可以验证客户的日期。
@Html.DropDownList("Day", Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Day --",new { @class="myDate"})
@Html.DropDownList("Month", Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --", new { @class = "myDate" })
@Html.DropDownList("Year", Enumerable.Range(2018, 5).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Year --", new { @class = "myDate" })
<br />
@Html.TextBoxFor(model=>model.ModifiedDate, new { @readonly=true, style="background:#888;color:white;text-align:center;border:1px solid #ddd"})
@Html.ValidationMessageFor(model => model.ModifiedDate, "", new { @class = "text-danger" })
脚本
@section scripts{
<script>
var day = document.getElementById("Day");
var month = document.getElementById("Month");
var year = document.getElementById("Year");
var ModifiedDate = document.getElementById("ModifiedDate");
ModifiedDate.value = '0000-00-00';
$('.myDate').on('change', function () {
var d, m, y;
if (day.selectedIndex > 0)
d = day.options[day.selectedIndex].text;
else
d = "00";
if (month.selectedIndex > 0)
m = month.options[month.selectedIndex].text;
else
m = "00";
if (year.selectedIndex > 0)
y = year.options[year.selectedIndex].text;
else
y = "0000";
var date = y + '-' + m + '-' + d;
ModifiedDate.value = date;
});
</script>
}