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 函数,允许用户选择一个日期。如何将该日期选择传递给我的控制器?这就是我到目前为止所拥有的,顺便说一句,它返回一个空 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

你有两种可能性:

  1. #DatePicker在包含该字段的表单内使用提交按钮。这样你就不需要传递任何东西,当表单提交时,所有输入值都会自动发送到服务器:

    @using (Html.BeginForm("SomeAction", "Home"))
    {
        @Html.TextBoxFor(x => x.DatePicker)
        <input type="submit" value="Click Me" />
    }
    
  2. 如果要使用锚点,则需要使用 javascript 将 datepicker 的值附加到查询字符串中。因此,在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 回答