2016-06-26 6 views
0

良い時間。 Asp.net-MVCの新機能です。モデルバインダーを使用してフォームからデータをスパンの値をデータベースに投稿する方法

私はユーザーからデータを取得するフォームを持っています。このページには、入力データとスパンの値を自分のデータベースに掲載したいというスパンがあります。

私はモデルバインダーを使いたがっていましたが、私のモデルと同じスパンの名前を付ける方法はわかりません。ここ

は私のアクションです:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "Id,TourId,FirstName,LastName,Email,Phone,Comment,FrequentTraveler,TravelersCount,Date,ContactTimePreference,Country,Archived")] Request request) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Requests.Add(request); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(request); 
    } 

スパンではJavaScript

<span class="col-md-5" id="selecteddate"></span> 

から値を取得し、ここで私の形ですが、私は速記のためにここに一つだけの入力を記述しています。 :あなたは任意のより良い方法を持っている場合、いずれかが、それは可能かもしれない方法を教えたりすることができれば、私はDate

という名前の列のデータベースにspan ID =「selecteddate」の値を投稿したい

<form role="form" method="post" action="/Tour"> 
    @Html.AntiForgeryToken() 

<div class="form-group"> 
<label for="FName">First Name:</label> 
<input type="text" name="FirstName" class="form-control" id="FName" placeholder="Enter FirstName" /> 


</div> 

</form> 

は感謝します提案として?

答えて

2

この場合、1つの解決策はを<from>に追加することです。あなたが提出するとき、あなたはjavascriptを使ってあなたのスパンからそのコピーをコピーします。

<form role="form" method="post" action="/Tour" onsubmit="prepare()"> 
    @Html.AntiForgeryToken() 

<div class="form-group"> 
<label for="FName">First Name:</label> 
<input type="text" name="FirstName" class="form-control" id="FName" placeholder="Enter FirstName" /> 


</div> 
<input type="hidden" name="Date" /> 
</form> 

@section Scripts { 
    <script type="text/javascript"> 
    function prepare() { 
     document.getElementsByName("Date")[0].value = document.getElementById("selecteddate").innerHtml; 
    } 
    </script> 
} 
+0

Date [0] .valueでは[0]は何ですか? –

+0

'getElementsByName'は見つかった名前の配列を返します。私たちは配列 –

+0

で最初に見つかった名前を1000回だけ取得します。それは動作します:) –

関連する問題