我本来可以用

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

我做错什么了吗?
谢谢

最佳答案

您是否尝试过使用 View 模型代替ViewData?以For结尾并采用lambda表达式的强类型助手不能与ViewData等弱类型结构一起使用。

我个人不使用ViewData / ViewBag。我定义 View 模型,并让我的 Controller 操作将这些 View 模型传递给我的 View 。

例如,在您的情况下,我将定义一个 View 模型:

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

让我的 Controller 操作填充此 View 模型:
public ActionResult Index()
{
    var model = new MyViewModel
    {
        CRN = "foo bar"
    };
    return View(model);
}

然后让我的强类型 View 仅使用EditorFor帮助器:
@model MyViewModel
@Html.EditorFor(x => x.CRN)

这会产生我:
<input id="CRN" name="CRN" type="hidden" value="foo bar" />

在结果HTML中。

关于asp.net-mvc - Html.HiddenFor value属性未设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6850174/

10-12 07:24