Asp.net-Mvc

Html.HiddenFor 值屬性未設置

  • July 27, 2011

我本來可以用

@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="" />

我做錯什麼了嗎??謝謝

您是否嘗試過使用視圖模型而不是 ViewData?以 lambda 表達式結尾For並採用 lambda 表達式的強類型助手不能用於弱類型結構,例如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 中。

以下將在 MVC 4 中工作

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

@Value 屬性區分大小寫。您需要在 @Value 上使用大寫字母“V”

這是我的模型

public int CRN { get; set; }

這是您在瀏覽器中查看時以 html 輸出的內容

<input value="1" data-val="true" data-val-number="The field CRN must be a number." data-val-required="The CRN field is required." id="CRN" name="CRN" type="hidden" value="1"/>

這是我的方法

[HttpPost]
public ActionResult MyMethod(MyViewModel viewModel)
{
 int crn = viewModel.CRN;
}

引用自:https://stackoverflow.com/questions/6850174