簡體   English   中英

如何使用Html.ActionLink將文本框(DatePicker)變量傳遞給控制器​​?

[英]How do I pass a textbox (DatePicker) variable to my controller using Html.ActionLink?

我有一個鏈接,可在不離開頁面的情況下在新窗口中打開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函數,該函數允許用戶選擇一個日期。 如何將日期選擇傳遞給我的控制器? 這就是我到目前為止所擁有的,順便說一句,它返回一個空的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){...}

有任何想法嗎? 提前致謝...

您有2種可能性:

  1. 在包含#DatePicker字段的表單內使用提交按鈕。 這樣,您無需傳遞任何內容,提交表單后,所有輸入值將自動發送到服務器:

     @using (Html.BeginForm("SomeAction", "Home")) { @Html.TextBoxFor(x => x.DatePicker) <input type="submit" value="Click Me" /> } 
  2. 如果要使用錨,則需要使用javascript才能將datepicker的值附加到查詢字符串。 因此,在您的stayHomeFunc函數內部, 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請求之間存在的差異。 有關更多信息,請參閱以下文章

您也可以使用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});

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM