gpt4 book ai didi

c# - 明确指定模型数据类型 MVC/C#

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:40 25 4
gpt4 key购买 nike

由于 @Html.EditorFor() 正在根据模型数据类型构建输入字段。我想使用此方法并为 DATETIME 类型的模型变量生成一个文本框,而不是日历。有什么办法吗?

最佳答案

您可以创建自己的助手来显示和管理日期。

public static MvcHtmlString DatePickerFor<TModel, TProperty>
(this HtmlHelper<TModel> helper,
Expression<Func<TModel, TProperty>> expression)
{
string datePickerName =
ExpressionHelper.GetExpressionText(expression);
string datePickerFullName = helper.ViewContext.ViewData.
TemplateInfo.GetFullHtmlFieldName
(datePickerName);
string datePickerID = TagBuilder.CreateSanitizedId
(datePickerFullName);

ModelMetadata metadata = ModelMetadata.FromLambdaExpression
(expression, helper.ViewData);
DateTime datePickerValue = (metadata.Model == null ?
DateTime.Now : DateTime.Parse(
metadata.Model.ToString()));

TagBuilder tag = new TagBuilder("input");
tag.Attributes.Add("name", datePickerFullName);
tag.Attributes.Add("id", datePickerID);
tag.Attributes.Add("type", "date");
tag.Attributes.Add("value", datePickerValue.
ToString("yyyy-MM-dd"));

IDictionary<string, object> validationAttributes = helper.
GetUnobtrusiveValidationAttributes
(datePickerFullName, metadata);

foreach (string key in validationAttributes.Keys)
{
tag.Attributes.Add(key, validationAttributes[key].ToString());
}

MvcHtmlString html=new MvcHtmlString(
tag.ToString(TagRenderMode.SelfClosing));
return html;
}

准备使用助手

public class EmployeeMetadata
{
[Required]
public DateTime BirthDate { get; set; }
}

[MetadataType(typeof(EmployeeMetadata))]
public partial class Employee
{
}

public ActionResult Index()
{
NorthwindEntities db = new NorthwindEntities();
return View(db.Employees.First());
}

你可以使用你的助手

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
@using(Html.BeginForm("ProcessForm","Home",FormMethod.Post))
{
@Html.DatePicker("birthdateUnbound")
@Html.DatePickerFor(m=>m.BirthDate)
@Html.ValidationMessageFor(m=>m.BirthDate)
<input type="submit" value="Submit" />
}

提交表单

public ActionResult ProcessForm(Employee obj)
{
return View("Index",obj);
}

关于c# - 明确指定模型数据类型 MVC/C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36644975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com