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);
    } 

span は JavaScript から値を取得しています

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

これが私のフォームですが、Shorthand の入力の 1 つだけをここに記述します。:

 <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>

spanid="selecteddate" の値をデータベースの名前付き列に投稿したいDate

どうすればそれが可能になるか、または提案としてより良い方法があれば教えていただければ幸いです。

4

1 に答える 1

2

これに対する 1 つの解決策は、 に を追加するhidden html inputこと<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>
}
于 2016-06-26T09:07:57.090 に答える