2

これに関するstackoverflowに関する多くの質問を読み、いくつかの例を試しましたが、なぜこれが機能しないのかまだ行き詰まっています。だから私はコミュニティに尋ねています。

モデル:

public class UploadModel
{
    public string PatientID { get; set; }
    public DateTime DrawDate { get; set; }
}

コントローラ:

public class FileManagementController : Controller
{

    [HttpGet]
    public ActionResult UpLoad()
    {
        ViewData["message"] = String.Empty;
        UploadModel model = new UploadModel
        {
            PatientID = String.Empty,
            DrawDate = DateTime.Now,
        };
        return View(model);
    }
    [HttpPost]
    public ActionResult Upload(UploadModel model, HttpPostedFileBase MyFile)
    {
        if (ModelState.IsValid)
        {
            //Do Validation and Save here

        }
        UploadModel newmodel = new UploadModel
        {
            PatientID = model.PatientID,
            DrawDate = model.DrawDate,
        };

        ViewData["message"] = "data submitted";

        return View(newmodel);
    }

意見:

<form action="" method="post" enctype="multipart/form-data" id="MyForm">
        @Html.EditorFor(m => m)
        <label for="MyDateTime">My Date Time:</label>
        <label for="MyFile">File:</label>
        <input type="file" name="MyFile" id="MyFile" /><br />
        <input id="submit" name="submit" type="submit" value="Save" />                       
    </form>

そこから、_Layout.cshtml ページに次のコードを追加しました (すべて正しくマップされています)。

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/jquery-ui-1.7.2.custom.css")" rel="stylesheet" type="text/css" />
    <script src='@Href("~/Scripts/jquery-1.7.1.js")' type="text/javascript"  ></script>
    <script src='@Href("~/Scripts/jquery-ui-1.8.1.custom.min.js")'  type="text/javascript" ></script>
    <script type="text/javascript" src='@Href("~/Scripts/jquery.alphanumeric.pack.js")'></script>
    <script type="text/javascript" src='@Href("~/Scripts/jquery.watermark.min.js")'></script>

次に、Views -> Shared で EditorTemplates フォルダーを追加し、DateTime.cshtml ページを作成しました。

@model DateTime

@Html.TextBox("", Model.ToString("dd/MM/yyyy"), 
new { @class = "date" })


<script type="text/javascript" >
 $(document).ready(function () {
     //set the date picker
     var dtp = '@ViewData.TemplateInfo.GetFullHtmlFieldId("")';
     dtp = dtp.replace("[", "_");
     dtp = dtp.replace("]", "_");
     //window.alert($(dtp).attr("value"));
     var hid = ($(dtp).attr("type") == "hidden");
     if (!hid) {
         $(dtp).datepicker({
             showOn: 'button', buttonImage: '@Href("~/Content/images/calendar.gif")%>', buttonImageOnly: true
           , changeMonth: true, changeYear: true
           , dateFormat: 'dd M yy'//, numberOfMonths: 2
         });
     }

 });

</script>

これは、これに関するほとんどのチュートリアルの特徴のようですが、機能していないようです。アイコンは表示されません。Chrome では、html5 のカレンダー ポップアップが表示されますが、jquery のポップアップは表示されません。どんな提案でも大歓迎です。

4

2 に答える 2

2

セレクターは私には正しくないようです。あなたはコードです:

var dtp = '@ViewData.TemplateInfo.GetFullHtmlFieldId("")';

文字列 'my_id' になりますが、次のように # 記号を使用して、文字列が ID であることを jQuery に伝える必要があります。

var dtp = '#@ViewData.TemplateInfo.GetFullHtmlFieldId("")';

補足として、モデルでレンダリングされた各 DateTime の Script タグ全体を本当にエクスポートしますか? 私には不必要に思えますが、あなたはすでにこれについて考えているかもしれません. 私のお勧めは、 DateTime.cshtml を単純に次のように変更することです。

@model DateTime

@Html.TextBox("", Model.ToString("dd/MM/yyyy"), new { @class = "date-picker" })

次に、ページまたはレイアウトのどこかで、次のようにします。

<script type="text/javascript" >
 $(function () {
   $('.date-picker').datepicker({
             showOn: 'button', buttonImage: '@Href("~/Content/images/calendar.gif")%>', buttonImageOnly: true
           , changeMonth: true, changeYear: true
           , dateFormat: 'dd M yy'//, numberOfMonths: 2
   });
 });
</script>

そうすれば、1 つのスクリプトだけがレンダリングされ、すべての DateTime が処理されます。

于 2012-10-01T19:26:09.827 に答える
0

私は初心者なのでコメントを投稿することはできません (申し訳ありません!) が、私ができる唯一のアドバイスは、 @Html.EditorFor(m => m) から派生した html がまさにあなたが必要としているものであることを確認することです (このhtmlはモデルによって異なります)。これについての詳細は次のとおりです。 http://msdn.microsoft.com/en-us/library/ee402949(v=vs.98).aspx

また、javascript セクションの末尾に %> があることに気付きました: "@Href("~/Content/images/calendar.gif")%>" で、エラーのように見えます。

于 2012-10-01T19:19:43.813 に答える