3

ビューから取得した日時の値をモデルにバインドして、データベースに保存するために使用できるようにします。
注:現在、ブートストラップの日時ピッカーを使用して日時の値を取得しています。
foo という ViewModel があるとしましょう

public class fooVM
{
  public string Name {get; set; }

  [DataType(DataType.DateTime)]
  public DateTime DateEntered {get; set}
}

これに基づいて、私は見解を持っています

@model User.Model.fooVM
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/shared/_BootstrapLayout.basic.cshtml";
}
@section Datetime
{
    <link href="@Url.Content("~/Content/bootstrap.css")" rel="stylesheet" type="text/css"/>
    <link href="@Url.Content("~/Content/bootstrap-datetimepicker.min.css")" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-2.0.2.min.js")"></script>
    <script type="text/javascript" src="~/Scripts/bootstrap.min.js"></script>
    <script type="text/javascript" src="~/Scripts/bootstrap-datetimepicker.min.js"></script>
}
  @using (Html.BeginForm("Register", "Account", FormMethod.Post))
    {

            <div class="input-block-level">@Html.TextBoxFor(model => model.Name</div>


           <div id="datetimepicker2" class="input-append date">
                    <input data-format="dd/MM/yyyy HH:mm:ss PP" type="text"/>
               <span class="add-on">
                   <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
               </span>

                </div>

            <script type="text/javascript">
                $(document).ready(function() {
                    $('#datetimepicker2').datetimepicker({
                        format: 'dd/MM/yyyy hh:mm:ss',
                        language: 'en',
                        pick12HourFormat: true
                    });
                });
            </script>
        </div>

    }
    <div class="form-actions">
        <button type="submit" class="btn btn-primary">Save changes</button>
    </div>
</fieldset>

DateEnteredこれで日時ピッカーが表示されますが、値はモデルの値にバインドされません。

日時のビューから値を取得して保存したい場合、データベースにある可能性がありますが、どうすればよいですか? コントローラーで次のコマンドを実行すると、機能するようになります。

[HttpPost]
public ActionResult Create(fooVM user)
{
    if (ModelState.IsValid) {
       _db.Users.Add(user);
       _db.SaveChanges();
}

PS: これはデータベースで可能な値である可能性があります
Name: ABC
DateEntered: 6/14/2013 9:34:23 AM

4

3 に答える 3

4

入力に ​​Name 属性を設定すると、MVC はそれを同じ名前のモデルのプロパティに一致させると思います。

または、HtmlTextBoxForヘルパーを使用し、htmlAttributesパラメーターを使用して設定することもできますdata-format。何かのようなもの@Html.TextBoxFor(model => model.DateEntered, new { data_format = 'dd/MM/yyyy HH:mm:ss PP'});

このオーバーロードのMSDNは次のとおりです。

于 2013-06-25T14:13:55.357 に答える