在MVC-4 Razor视图我有2列的HTML表格。 第1列显示领域,也将其作为一个隐藏字段。 表2列有<a>
上点击它重定向到其他一些控制和行动。
<tbody>
@foreach (var row in Model.Conversions)
{
<tr>
<td>@(Html.DisplayFor(m => row.LastUpdatedDate))
@(Html.Hidden("DateFrom",@row .LastUpdatedDate))
</td>
<td><a href="@Url.Action("ExchangeRateDetails", "ExchangeRate", new { currencyCode = @row.CurrencyCodeFromTo })">+</a>
</td>
</tr>
}
</tbody>
Action里面我想读的隐藏字段的值,但它是空的。 这里是我的代码:
public virtual ActionResult ExchangeRateDetails(string currencyCode)
{
var dat = Request.Form["DateFrom"];
}
问题:
我发现隐藏字段值为空。 我的期望是它应有的价值形式来隐藏字段。 我无法通过这个值作为查询字符串。 能否请您指导和帮助我,我怎么能在行动中读出隐藏字段值?
许多感谢您的指导和帮助我。
谢谢
使用的FormCollection
[HttpPost]
public virtual ActionResult ExchangeRateDetails(FormCollection collection,string currencyCode)
{
string value = Convert.ToString(collection["DateFrom"]);
...
return View();
}
而为什么你使用@(当时前html.hidden在hidenfield?请更改像,删除“()”
@Html.Hidden("DateFrom",@row .LastUpdatedDate)
编辑
而在你的锚标记添加形式=“邮报”
喜欢
<a href="@Url.Action("ExchangeRateDetails", "ExchangeRate", new { currencyCode = @row.CurrencyCodeFromTo **,form="post"**})">+</a>
它的工作对我来说。 如果您通过上面的编辑的代码在你的锚标记添加形式=“邮报”,那么你不需要任何其他的变化,你的代码总是与这个小变化工作。
Html.Hidden(...)
生成一个隐藏的<input>
。 所述<input>
当您提交表格(通过点击值仅发送到服务器<input type="submit"/>
在你的情况,你要创建一个超链接到另一个动作。 当用户点击它,他会去到指定的URL,他不会提交当前表单。
您应该把您的超级链接成一个提交按钮,使提交表单到你想要的动作或(更简单的样品做)包含的字段值进入的网址:
<td><a href="@Url.Action("ExchangeRateDetails", "ExchangeRate", new { currencyCode = row.CurrencyCodeFromTo, DateFrom = row.LastUpdateDate })">+</a>
编辑:这是与形式,而不是超链接的解决方案:
<tbody>
@foreach (var row in Model.Conversions)
{
<tr>
@using (Html.BeginForm("ExchangeRateDetails", "ExchangeRate"))
{
<td>@Html.DisplayFor(m => row.LastUpdatedDate)
@Html.Hidden("DateFrom", row.LastUpdatedDate)
@Html.Hidden("currencyCode", row.CurrencyCodeFromTo)
</td>
<td>
<input type="submit" value="+" />
</td>
}
</tr>
}
</tbody>
如果你想保持超链接,而不是按钮,你也可以这样做,但你必须写一些JavaScript,当用户点击一个链接提交表单。 另外,您也可以重新风格您的提交按钮,看起来像一个超链接。