asp.net-mvc – Html.HiddenFor值属性未设置

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – Html.HiddenFor值属性未设置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以用
@Html.HiddenFor(x=> ViewData["crn"])

但是,我得到,

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

为了避免这个问题(id = ViewData_crn_和nam​​e = ViewData [crn]),我尝试执行以下操作,但是没有设置“value”属性

@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吗?以“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中。

猜你在找的asp.Net相关文章