明确指定模型数据类型MVC/C#
因为明确指定模型数据类型MVC/C#,c#,asp.net-mvc,datetime,C#,Asp.net Mvc,Datetime,因为@Html.EditorFor()正在根据模型数据类型构建输入字段。我想使用这个方法为DATETIME类型的模型变量而不是日历生成一个文本框。有什么方法可以做到这一点吗?您可以创建自己的助手来显示和管理日期 public static MvcHtmlString DatePickerFor<TModel, TProperty> (this HtmlHelper<TModel> helper, Expression<Func<TModel, TProper
@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;
}
你可以使用你的助手
<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" />
}
TextBoxFor
或[DataType(DataType.Text)]
,AFAIK。真正的问题是为什么要像编辑文本一样编辑日期时间。@CodeCaster[DataType(DataType.text)]不起作用,TextBoxFor我知道它会生成一个文本框,但关键是你能不能使用FormEditorFor并为DateTime变量获取一个文本框。@CodeCaster我需要将其解析为DateTime格式的sql。FormEditorFor()
?这不是MVC的一部分(或者你的意思是EditorFor()
)@StephenMuecke是的,这就是我的意思,为任何混淆道歉。
<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);
}