首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Umbraco窗体DateTimePicker

Umbraco窗体DateTimePicker
EN

Stack Overflow用户
提问于 2015-09-01 13:50:15
回答 1查看 1.7K关注 0票数 1

我尝试创建第二个DatePicker,但也允许选择时间。

我的FieldType.DateTimePicker是

代码语言:javascript
复制
@model Umbraco.Forms.Mvc.Models.FieldViewModel
@{
    string val = string.Empty;
    if (Model.ValueAsObject != null && Model.ValueAsObject != "")
    {
        DateTime d;
        d = (DateTime)Model.ValueAsObject;
        val = d.ToShortDateString();
    }
}
<input type="text" name="@Model.Name" id="@Model.Id" class="datepickerfield" value="@val"
       @{if (Model.Mandatory)
       {
           <text> data-val="true" data-val-required="@Model.RequiredErrorMessage" </text>
       }}
/>

文件放在Partials/Forms/Fieldtype下面。

我还有一个DateTimePicker.cs类

代码语言:javascript
复制
namespace FALCO_CLIENT.App_Plugins.UmbracoForms
{
    public class DateTimePicker : Umbraco.Forms.Core.FieldType
    {
        [Umbraco.Forms.Core.Attributes.Setting("ValueAsObject", description = "DateTimePicker", view = "DateTimePicker")]
        public DateTime ValueAsObject { get; set; }

        public DateTimePicker() {
            //Provider
            this.Id = new Guid("D6A2C406-CF89-11DE-B075-66B155D89593 ");
            this.Name = "DateTimePicker";
            this.Description = "Renders a html input";
            this.Icon = "icon-autofill";
            this.DataType = FieldDataType.DateTime;
            this.SortOrder = 10;
        }


    }
}

对于这个类,我有一个小视图(DateTimePicker.html):

代码语言:javascript
复制
<input tabindex="-1" type="text" /> <button class="btn"><i class="icon icon-calendar"></i></button>

在Umbraco表单中,我确实可以选择“选择”DateTimePicker,但它只生成一个可以写入的文本字段。

我做错了什么?

作为后续问题:我应该在哪里设置DatePicker以允许时间?我在想我会在umbraco.forms.js上做这件事,但我找不到正确的地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 05:40:19

使用dotPeek,我能够看到原始DatePicker字段类型引用--实现中缺少的部分视图:

代码语言:javascript
复制
public class DatePicker : FieldType
  {
    public override bool SupportsRegex
    {
      get
      {
        return false;
      }
    }

    public DatePicker()
    {
      this.Id = new Guid("F8B4C3B8-AF28-11DE-9DD8-EF5956D89593");
      this.Name = "Date";
      this.Description = "Renders a date picker";
      this.Icon = "icon-calendar";
      this.DataType = FieldDataType.DateTime;
      this.Category = "Simple";
      this.SortOrder = 30;
      this.FieldTypeViewName = "FieldType.DatePicker.cshtml";
    }

    public override IEnumerable<string> RequiredPartialViews(Field field)
    {
      return (IEnumerable<string>) new string[1]
      {
        "~/Views/Partials/Forms/DatePicker.cshtml"
      };
    }

    public virtual IEnumerable<object> ProcessValue(IEnumerable<object> postedValues)
    {
      return DatePicker.ProcessFieldValues(postedValues);
    }

    public override IEnumerable<object> ConvertToRecord(Field field, IEnumerable<object> postedValues, HttpContextBase context)
    {
      return DatePicker.ProcessFieldValues(postedValues);
    }

    private static IEnumerable<object> ProcessFieldValues(IEnumerable<object> postedValues)
    {
      List<object> objectList = new List<object>();
      postedValues = (IEnumerable<object>) postedValues.ToArray<object>();
      if (!postedValues.Any<object>())
        return (IEnumerable<object>) objectList;
      DateTime result;
      if (DateTime.TryParse(postedValues.First<object>().ToString(), out result))
        objectList.Add((object) result);
      return (IEnumerable<object>) objectList;
    }
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32333421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档