2016-12-03 7 views
0

データベースに投稿されたテキストボックスを持つMVCアプリケーションを作成しました。テキストボックスが表示されたら、今日の日付をビューからキャプチャして、テーブルに保存します。投稿されたビューの日付と時刻を取得するにはどうすればいいですか?また、この情報をデータベース内の行に渡すにはどうすればよいですか?助けをお待ちしています。データベースからのビューからの日付時間のキャプチャMVC

コントローラ

[HttpGet] 
    public ActionResult Pay(int accountNumber) 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult Pay(Payments payment) 
    { 
     if(ModelState.IsValid) 
     { 
      DB.Payment.Add(payment); 
      DB.SaveChanges(); 
      var service = new Accounts(DB); 
      service.Updatepayee(payment.AccountNumber); 
      return RedirectToAction("Index", "Home"); 
     } 
     return View(); 

    } 

支払いクラス

public class Payments 

    public int Id { get; set; } 

     [Required] 
     [DataType(DataType.Currency)] 
     [DisplayFormat(ConvertEmptyStringToNull = false)] 
     public decimal Amount { get; set; } 

     [Required] 
     public int AccountNumber {get; set;} 


     [RegularExpression(@"(^$)|(^\d{2}/\d{2}/\d{4})|(^((\d{1})|(\d{2}))/((\d{1})|(\d{2}))/(\d{4})\s((\d{1})|(\d{2}))[:]{1}((\d{1})|(\d{2}))[:]{1}((\d{1})|(\d{2}))\s((AM)|(PM)))", ErrorMessage = "Invalid Date")] 
     public DateTime TransactionDate { get; set; } 
     //Navigation property to check the account 

public virtual AccountNumber accountNumber { get; set; } 
    } 

ペイビュー

@model Credits.View.Payments 

@{ 
    ViewBag.Title = "Pay"; } 

<h2>Payments</h2> 


@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Transaction</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> } 



<div> 
    @Html.ActionLink("Back to List", "Index", "Home") </div> 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") } 
+1

「TransactionDate」には、特定のカルチャと書式に関連付けられた正規表現バリデータがあります。これは意図的ですか?有効な24時間の日付/時刻形式を無効として拒否する準備ができていますか? – Dai

+0

正規表現を削除してもうまくいきました。ご回答ありがとうございます – Dodi

答えて

2

あなたは、コントローラにそれを設定できませんでした:

[HttpPost] 
public ActionResult Pay(Payments payment) 
{ 
    if(ModelState.IsValid) 
    { 
     payment.TransactionDate = DateTime.Now.ToUniversalTime(); 
     DB.Payment.Add(payment); 
     DB.SaveChanges(); 
+0

日付は追加されましたが、トランザクションは機能しませんでしたか?テキストボックスに投稿した番号がデータをテーブルに送信しませんでしたか? – Dodi

+0

@Daiがトラックに存在する可能性があります。日付値にはフォーマットはありません。正規表現は、おそらくテキストボックスには適用できますが、プロパティ自体には適用できません。 – Gustav

+0

どうすればいいですか? – Dodi

0
[HttpPost] 
public ActionResult Pay(Payments payment) 
{ 
    var d=DateTime.Now.ToUniversalTime(); 
    if(ModelState.IsValid) 
    { 

     Payments p=new() Payments{ 
     AccountNumber=p.AccountNumber, 
     Amount=payment.Amount, 
    TransactionDate=d 
}; 

     DB.Payment.Add(p); 
     DB.SaveChanges(); 
関連する問題