2
@Html.EditorFor()
はモデルデータ型に従って入力フィールドを構築しているためです。このメソッドを使用し、カレンダーの代わりにDATETIME型のモデル変数のテキストボックスを生成したいと思います。これを行う方法はありますか?明示的にモデルデータ型を指定します。MVC/C#
@Html.EditorFor()
はモデルデータ型に従って入力フィールドを構築しているためです。このメソッドを使用し、カレンダーの代わりにDATETIME型のモデル変数のテキストボックスを生成したいと思います。これを行う方法はありますか?明示的にモデルデータ型を指定します。MVC/C#
独自のヘルパーを作成して、日付を表示および管理することができます。
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());
}
の使用を準備すると、あなたのフォーム
public ActionResult ProcessForm(Employee obj)
{
return View("Index",obj);
}
'TextBoxFor'または'のどちらかを送信するには、あなたのヘルパー
を使用することができます[DataType(DataType.Text)] '、AFAIK。実際の質問は、それがテキストのようにDateTimeを編集する理由です。 – CodeCaster
@CodeCaster [DataType(DataType.Text)]は機能せず、TextBoxFor私はそれがテキストボックスを生成するだろうと知っていますが、全体のポイントはFormEditorForを使用し、DateTime varのテキストボックスを得ることができました。 –
@CodeCaster SQLに対してDateTime形式で解析する必要があります。 –