我目前在asp.net MVC的网站上工作。我有一个视图来编辑我的模型,但此模型中的某些项目只能由管理员修改。
所以我为基本用户删除了一些editorfor()
,一切正常......
直到我看到:如果基本用户编辑模型,则为其隐藏的字段将被修改为默认值,而不是管理员修改的前一个字段。
有人知道我怎样才能保存以前的值,即使它们不在editorfor()
中?
代码:
@Html.EditorFor(model => model.name)
@if (ViewBag.Role == "Admin")
{
@Html.EditorFor(model => model.age)
// If admin is connected, he can edit age => no problem
}
// if a user modify name but don't touch age because it's for admin only, the model age will get 0
提前致谢
答案 0 :(得分:1)
@Html.HiddenFor(m = m.age)
简单回答我的愚蠢问题,我先尝试过但它没有用,但现在它已经解决了。感谢Stephen Muecke。
答案 1 :(得分:1)
@Html.EditorFor(model => model.name)
@if (ViewBag.Role == "Admin")
{
@Html.EditorFor(model => model.age)
// If admin is connected, he can edit age => no problem
}
如果我们举个例子,那么年龄只适用于管理员。因此,当基本用户编辑此页面时,不满足时间条件,并且不会为基本用户呈现@Html.EditorFor(model => model.age)
。因此,当您发布表单时,时间年龄的值将不会传递给控制器,因为年龄不会以表单形式呈现。所以它将保存您设置的默认值。
解决方案是你必须在if条件下使用隐藏字段。所以价值将保持,因为它是控制器 - >查看 - >控制器。