0

ページを離れることなく、新しいウィンドウでPDFを開くリンクがあります。私はこのリンクを機能させました...

<script type="text/javascript">
$(function () {

    $("#DatePicker").mask("99/99/9999").datepicker({ maxDate: new Date() });
});
if (document.images) {
    var pic1 = new Image(100, 200);
    pic1.src = '<%=Url.Content("~/images/calendarContent.png") %>'
}
</script>

<%= Html.ActionLink("Click ME", "Controller", "Home", new { id = Model.id }, new { onclick = "stayHomeFunc()"})%></div>

レビュー後、ユーザーが日付を選択できるようにするDatePicker関数を追加する必要があります。その日付の選択をコントローラーに渡すにはどうすればよいですか?これは私がこれまでに持っているもので、ちなみにnullのstartDateを返します...

Enter Date:<input name="DatePicker" id="DatePicker" type="text" style="width: 80px" />
<%= Html.ActionLink("Click ME", "Controller", "Home", new { id = Model.id, startDate = DatePicker }, new { onclick = "stayHomeFunc()"})%></div>


public ActionResult COntroller(string id, string startDate){...}

何か案は?前もって感謝します...

4

2 に答える 2

0

2つの可能性があります:

  1. フィールドを含むフォーム内の送信ボタンを使用します#DatePicker。このように、何も渡す必要はありません。フォームが送信されると、すべての入力値が自動的にサーバーに送信されます。

    @using (Html.BeginForm("SomeAction", "Home"))
    {
        @Html.TextBoxFor(x => x.DatePicker)
        <input type="submit" value="Click Me" />
    }
    
  2. アンカーを使用する場合は、datepickerの値をクエリ文字列に追加するためにjavascriptを使用する必要があります。したがってstayHomeFunc、リンクがクリックされたときにトリガーされる関数内では、次のようになります。

    function stayHomeFunc(link) {
        var date = $('#DatePicker').datepicker('getDate');
        var formattedDate = $.datepicker.formatDate('yy-mm-dd', date);
        link.href += '?DatePicker=' + formattedDate;
    }
    

    次に、アンカーインスタンスをonclickイベントに渡すことを忘れないでください。

    <%= Html.ActionLink(
        "Click ME", 
        "SomeAction", 
        "Home", 
        new { id = Model.id }, 
        new { onclick = "stayHomeFunc(this)"}
    ) %>
    

個人的には、最初のオプションは意味的に正確であり、JavaScriptを必要としないため、最初のオプションを選択します。

また、モデルバインダーが使用するDateTime形式と、GETリクエストとPOSTリクエストの間に存在する違いにも注意してください。詳細については、次の記事を参照してください。

于 2012-09-21T12:27:08.533 に答える
-1

FormCollectionを使用することもできます。

見る

 @using (Html.BeginForm("SomeAction", "Home"))
{

<input type="text" id="DatePicker"  name="date">
}

コントローラ

   public ActionResult SomeAction( FormCollection form)
    {
     var date = form["date"];

               if (date != String.Empty)
                {
                    MyModel model = new MyModel();
                    model.date= DateTime.Parse(date);
                }
       return RedirectToAction("YourNewAction", new {date = model.date});

    }
于 2012-09-21T16:26:02.157 に答える