2016-08-16 8 views
3

@Html.TextBoxFor(model => model.StartDate, new { type = "datetime-local", @class = "form-control", @style = "height:34px;width:230px" })として宣言されたHtml.TextBoxForを使用して入力していますが、これらのうちの2つがAJAX ":30 2016-12-02T09" と:それぞれ "2016-12-12T12 50" resource_startresource_dueの以下文字列形式dd/MM/yyyyTHHの文字列が有効なDateTimeとして認識されませんでした:mm

DateTime ResourceStart = DateTime.ParseExact(resource_start, "dd/MM/yyyyTHH:mm", CultureInfo.InvariantCulture);

DateTime ResourceDue = DateTime.ParseExact(resource_due, "dd/MM/yyyyTHH:mm", CultureInfo.InvariantCulture);

値を行いC#のコントローラ機能があります。

以下は、プログラムがクラッシュしたときの例外的な詳細です。

System.FormatException was unhandled by user code 
    HResult=-2146233033 
    Message=String was not recognized as a valid DateTime. 
    Source=mscorlib 
    StackTrace: 
     at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) 
     at System.DateTime.ParseExact(String s, String format, IFormatProvider provider) 
     at ITPortal.Areas.ITWorkstream.Controllers.WorkstreamController.CreateResource(Int32 task_id, String resource_start, String resource_due) in c:\Work\ITPortal\ITPortal-DEV\ITPortal\Areas\ITWorkstream\Controllers\WorkstreamController.cs:line 247 
     at lambda_method(Closure , ControllerBase , Object[]) 
     at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
     at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod() 
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) 
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) 
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() 
     at System.Web.Mvc.Async.AsyncResultWrapper.End[TResult](IAsyncResult asyncResult, Object tag) 
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() 
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 
    InnerException: 

私は私の問題は、誰もがinstadを使用するフォーマットを私に伝えることができ、私はParseExact関数の中で私の文字列を宣言しているフォーマットであると思いますか?

+0

は、あなたが「/」の代わりにしてみました持っている「 - 」自分の価値観では? –

+0

'/'は '-'と同じではありません(ただし、' string'ではなく 'DateTime'をパラメータにして正しくバインドされるようにしてください)。 –

答えて

8

フォーマット文字列"dd/MM/yyyyTHH:mm"は、入力フォーマット2016-12-02T09:30と一致しません。フォーマットはスラッシュで始まるもので、入力はダッシュを伴う年 - 初めです。

あなたは02/12/2016T09:30に、あなたの入力を変更したり、フォーマットを変更する必要があり、次のいずれか

DateTime.ParseExact(resource_due, "yyyy-MM-ddTHH:mm", CultureInfo.InvariantCulture) 
関連する問題