2016-08-13 20 views
0

私はという名前のSQL Serverの列をdate_updatedとしています。 MVCアプリケーションでは、/Controllers/Example.csで、私は次のようました:/Views/Example/Edit.cshtmlでDisplayFor、EditorFor、およびHiddenFor HTMLヘルパーのMVCコントローラクラスのDateTime

private DateTime _date; 
    public DateTime date_updated 
    { 
     get 
     { 
      return _date; 
     } 
     set 
     { 
      _date = DateTime.Now; 
     } 
    } 

、私はDisplayFor、EditorFor、およびHiddenFor HTMLヘルパーをしました。

@Html.DisplayFor(model => model.date_updated) 
@Html.EditorFor(model => model.date_updated) 
@Html.HiddenFor(model => model.date_updated) 

のは、今日の日付が2016年8月13日で、IDを持つレコードが= SQLで「1」=「2016年7月1日を」last_updatedですしているとしましょう。 DisplayForおよびEditorFor HTMLヘルパーは今日の日付(2011年8月13日)を表示し、HiddenFor HTMLヘルパーは日付をSQLで表示します(07/01/2016)。

  • DisplayFor = 2016年8月13日
  • EditorFor = 2016年8月13日
  • HiddenFor = 2016年7月1日

私は非常にDisplayFor、EditorForたいと思いますし、 HiddenFor HTMLヘルパーは、すべての日付をSQLで表示します(07/01/2016)。 DisplayForおよびEditorFor HTMLヘルパーに、date_updatedをSQLから表示する方法がわかりません。

+0

このような場合、なぜプロパティ設定ツール '_date = DateTime.Now;'にこれがありますか? – Rahul

+0

私は_date = DateTime.Nowを配置しました。 setterプロパティの内部で、www.example.com/Example/Edit/1にナビゲートして[保存]をクリックすると、SQLのDateTimeが現在のDateTimeに更新されます。この目的に適したアプローチがいくつかありますか? – JeremyCanfield

+0

あなたが主張するものは(関連コードを省略しない限り)不可能です。 'date_updated'の値は、その値を設定することができないので、' DateTime.Now'(または 'DateTime.MinValue')だけを返すことができます。そして、 'EditorFor()'と 'HiddenFor()'の間には何も表示されません(typeof 'DateTime'のカスタム' EditorTemplate'を持たない限り)。そして、コントローラのプロパティの値を変更しない限り'ModelState'の値が初期化された後、' DisplayFor() 'と同じになります –

答えて

0

これは他の人に役立つ場合に私が思いついた解決策です。レコードを編集するとき、目的はのためのSQLにdate_publishedためのSQLで現在のDateTimeを維持するために、および日時を更新することである

をdate_updatedが

  • をdate_published

    • :SQLでの2列がありますdate_updated現在のDateTimeに更新されます。

      /Controllers/Example.csファイルを次のように変更しました。

      [Required] 
      [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
      public DateTime date_published { get; set; } 
      
      [Required] 
      [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
      public DateTime date_updated { get; set; } 
      

      次に、date_published列とdate_updated列の両方の/ View/Example/EditファイルにHiddenFor HTMLヘルパーを追加しました。 date_updatedの値をSystem.DateTime.Nowに設定します。 www.example.com/App/Edit/1のソースを表示

      @Html.HiddenFor(model => model.date_published) 
      @Html.HiddenFor(model => model.date_updated, new { @Value=System.DateTime.Now }) 
      

      はdate_publishedとdate_updatedが列の両方のために隠されたHTMLタグが含まれます。 date_publishedの隠しタグには、SQLからのDateTimeの値が含まれています。 date_updatedタグには、SQLからのDateTime用とSystem.DateTime.Now用の2つの値が含まれています。 date_updatedタグに2つの値を持つことは理想的ではありませんが、目標を達成します。 date_publishedはSQLからDateTimeを保持し、date_updatedはSQLのレコードを現在のDateTimeに更新します。

      <input id="date_published" name="date_published" type="hidden" value="7/01/2016 1:23:27 PM" /> 
      <input Value="08/13/2016 13:50:42" id="date_updated" name="date_updated" type="hidden" value="7/01/2016 1:23:27 AM" />