读取动作的隐藏字段的值?(reading hidden field value in action?

2019-10-18 19:17发布

在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"];

}

问题:

我发现隐藏字段值为空。 我的期望是它应有的价值形式来隐藏字段。 我无法通过这个值作为查询字符串。 能否请您指导和帮助我,我怎么能在行动中读出隐藏字段值?

许多感谢您的指导和帮助我。

谢谢

Answer 1:

使用的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>

它的工作对我来说。 如果您通过上面的编辑的代码在你的锚标记添加形式=“邮报”,那么你不需要任何其他的变化,你的代码总是与这个小变化工作。



Answer 2:

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,当用户点击一个链接提交表单。 另外,您也可以重新风格您的提交按钮,看起来像一个超链接。



文章来源: reading hidden field value in action?