首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么mvc Html.HiddenFor不渲染我的字段?

为什么mvc Html.HiddenFor不渲染我的字段?
EN

Stack Overflow用户
提问于 2010-08-31 12:44:55
回答 3查看 16K关注 0票数 16

我正试着做这件简单的事情

<%= Html.HiddenFor(model => model.Id)%>

该模型是

[HiddenInput(DisplayValue=true)]
public int Id { get; set; }

但我总是把这个渲染出来

<input type="hidden" value="0" name="UserInfo.Id" id="UserInfo_Id">

我检查过了,id不是0..?!

这里需要一些解释。

编辑

问题似乎是下面提到的post问题。这是有效的

<input type="hidden" value="<%= Html.AttributeEncode(Model.Id) %>" id="<%= Html.IdFor(model=>model.Id)%>" name="<%= Html.NameFor(model=>model.Id)%>" />

感谢Manaf

EN

回答 3

Stack Overflow用户

发布于 2014-02-07 23:05:04

补充Manaf的正确答案--您正确地注意到问题发生在处理posts的控制器操作中。当我显式地将模型传递给视图时,我在处理get的控制器操作中也遇到了同样的问题:

[HttpGet]
ActionResult SearchForSomething(SearchForm searchForm)
{
    searchForm.MyId = SomeValueFromSession;
    return View("SearchForSomething", searchForm);
}

在视图中,为MyId呈现隐藏输入的这一行始终呈现为"0":

@Html.HiddenFor(m => m.MyId);

根据Darren Oster的建议,我更改了以下内容并解决了问题:

[HttpGet]
ActionResult SearchForSomething(SearchForm searchForm)
{
    searchForm.MyId = SomeValueFromSession;
    ModelState.Clear();
    return View("SearchForSomething", searchForm);
}
票数 5
EN

Stack Overflow用户

发布于 2015-07-17 03:50:20

我的评论被放在最后一个位置(甚至我都找不到它),所以:

如果您不想像Darren Oster建议的那样清除模型状态,那么删除有问题的键对我来说很有效:ModelState.Remove("HiddenKey")

票数 0
EN

Stack Overflow用户

发布于 2015-08-13 17:55:33

我在使用@Html.HiddenFor时也遇到了这个问题。

@Html.Hidden("Id",Model.Id)也给出了值0,但是外键字段,例如@Html.Hidden("Model_Category_ModelId",Model.Category.ModelId)起作用了,而它的@Html.HiddenFor(m => m.Category.ModelId)不起作用。

我的解决方案是重定向到get操作,如ASP NET MVC Post Redirect Get Pattern中所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3606087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档