28

私は使用することができた

@Html.HiddenFor(x=> ViewData["crn"])

しかし、わかりました、

<input id="ViewData_crn_" name="ViewData[crn]" type="hidden" value="500" />

どういうわけかその問題を回避するために(id=ViewData_crn_ and name=ViewData[crn])、次のことを試みましたが、「値」属性が設定されていません。

@Html.HiddenFor(x => x.CRN, new { @value="1"})
@Html.HiddenFor(x => x.CRN, new { @Value="1"})

生成する

<input id="CRN" name="CRN" type="hidden" value="" />
<input Value="500" id="CRN" name="CRN" type="hidden" value="" />

私は何か悪いことをしていますか?? ありがとう

4

6 に答える 6

39

ViewDataの代わりにビューモデルを使用してみましたか?Forラムダ式で終わり、ラムダ式をとる強い型のヘルパーは、などの弱い型の構造では機能しませんViewData

個人的にはViewData/ViewBagを使用していません。ビューモデルを定義し、コントローラーアクションでそれらのビューモデルをビューに渡します。

たとえば、あなたの場合、ビューモデルを定義します。

public class MyViewModel
{
    [HiddenInput(DisplayValue = false)]
    public string CRN { get; set; }
}

コントローラアクションでこのビューモデルにデータを入力します。

public ActionResult Index()
{
    var model = new MyViewModel
    {
        CRN = "foo bar"
    };
    return View(model);
}

次に、強く型付けされたビューにEditorForヘルパーを使用させます。

@model MyViewModel
@Html.EditorFor(x => x.CRN)

それは私を生成します:

<input id="CRN" name="CRN" type="hidden" value="foo bar" />

結果のHTMLで。

于 2011-07-27T20:11:06.277 に答える
5

もっと簡単な解決策があると思います。Html.Hiddenの代わりに使用する必要がありますHtml.HiddenFor。見て:

@Html.Hidden("CRN", ViewData["crn"]);

これにより、 、 、およびのINPUTタグが作成され、属性内に正しい値が作成されます。type="hidden"id="CRN"name="CRN"value

それが役に立てば幸い!

于 2012-02-06T00:15:39.580 に答える
3

@Html.HiddenFor の 2 番目のパラメーターは、フィールドに一致するルートまたはモデル データが見つからない場合にのみ値を設定するために使用されることに注意してください。Darinは正しいです。ビューモデルを使用してください。

于 2011-07-28T19:17:56.793 に答える