在我的控制器中我有IActionResult,需要3个字符串
public IActionResult DeviceDetails(string idDetails, string begindate, string enddate)
{....}
我喜欢在网页上传递这些字符串,用户可以从datepicker中选择开始和结束日期,所以我有:
<input id="begindate" type="date" class="btn btn-default"/>
<input id="enddate" type="date" class="btn btn-default" />
<button type="submit" value="show data" class="btn btn-default">@Html.ActionLink("Show data", "DeviceDetails", new { idDetails = ViewBag.DeviceName, begindate ="begindate", enddate = "enddate" }) </button>
如何将值从id="begindate"
和id="enddate"
传递到Html.ActionLink
(idDetails正常工作)?
或者,我如何以不同的方式将这两个字符串传递给控制器?
答案 0 :(得分:1)
试试这个:
ActionLink(默认):
useSSL=false
ActionLink(使用按钮):
@Html.ActionLink("YourAction", "YourController", new { id = item.ID })
或
<button onclick="location.href='@Url.Action("YourAction", "YourController",
new { Model.ProductID })';return false;">Details</button>
希望这会有所帮助......
答案 1 :(得分:1)
您可以使用ActionLink
中的临时占位符值生成routeValues
并将ID添加到锚元素:
<button type="submit" value="show data" class="btn btn-default">@Html.ActionLink("Show data", "DeviceDetails", new { idDetails = ViewBag.DeviceName, begindate = "xxxx", enddate = "yyyy" }, new { id = "showdata" })</button>
然后,使用普通的JS / jQuery来处理click
客户端事件,它将临时占位符值替换为日期输入的实际值(下面是使用jQuery):
$('#showdata').click(function(e) {
var beginDate = $('#begindate').val();
var endDate = $('#enddate').val();
var tempValue = $(this).prop('href');
var realValue = tempValue.replace("xxxx", beginDate)
.replace("yyyy", endDate);
location.href = realValue; // redirect
return false; // cancel default redirect
});
作为旁注,最好使用强类型的视图模型,并使用viewmodel属性将输入值传递给控制器操作方法,而不是构建大量的查询字符串。