如何使用Html.ActionLink将文本框(DatePicker)变量传递给我的控制器?
问题描述:
我有一个链接,可在不离开页面的情况下在新窗口中打开pdf。我有这个环节的工作...如何使用Html.ActionLink将文本框(DatePicker)变量传递给我的控制器?
<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种可能:
-
使用包含
#DatePicker
领域的表单内提交按钮。这样,你不需要通过任何东西,当提交表单所有输入值将被自动发送到服务器:@using (Html.BeginForm("SomeAction", "Home")) { @Html.TextBoxFor(x => x.DatePicker) <input type="submit" value="Click Me" /> }
-
,如果你想使用一个锚,您将需要以使用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请求之间存在的差异。欲了解更多信息,请参阅following article。
+0
这实际上是我在找的东西。非常感谢Dimitrov! – MrM
答
您也可以使用FormCollection。
VIEW
@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});
}
选择你不张贴形式的日期后,因此没有在所有发送到服务器(控制器)的数据。但您可以发布所选内容,可以使用$ .get(...)并使用所选的新日期更新控制器,并从控制器填充startDate = DatePicker。 – tkt986