1

IN 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>

アクション内で隠しフィールドの値を読み取ろうとしていますが、null です。これが私のコードです:

public virtual ActionResult ExchangeRateDetails(string currencyCode)
        {

            var dat = Request.Form["DateFrom"];

}

問題:

非表示フィールドの値が null であることがわかりました。私の期待は、非表示フィールドから値が来るはずです。この値をクエリ文字列として渡すことはできません。非表示フィールドの値を実際に読み取る方法を教えてください。

あなたの指導と私を助けてくれてありがとう。

ありがとう

4

2 に答える 2

2

FormCollection を使用する

[HttpPost]
public virtual ActionResult ExchangeRateDetails(FormCollection collection,string currencyCode)
{
     string value = Convert.ToString(collection["DateFrom"]);
     ...
     return View();
}   

@( の後に hidenfield を使用した理由 ? のように変更して、html.hidden の前にある '()' を削除してください

 @Html.Hidden("DateFrom",@row .LastUpdatedDate)

編集

アンカータグにform="Post"を追加します

お気に入り

<a href="@Url.Action("ExchangeRateDetails", "ExchangeRate", new { currencyCode = @row.CurrencyCodeFromTo **,form="post"**})">+</a>

それは私に働いています。上記の編集されたコードでアンカータグにform="Post"を追加すると、他の変更は必要ありません。コードは常にこの小さな変更で動作します。

于 2013-10-21T04:51:36.210 に答える