【发布时间】:2018-04-25 04:52:30
【问题描述】:
在我的UploadFilesViewModel 我有一个属性:
[HiddenInput(DisplayValue = false)]
public bool DirBlocked { get; set; }
在我看来,它的以下标记:
@Html.HiddenFor(m => m.DirBlocked)
当我在 GET 操作中执行以下代码时:
var model = new UploadFilesViewModel { UserBaseDir = await GetUserBaseDirAsync() };
model.DirBlocked = true;
return View(model);
DirBlocked 的隐藏输入呈现如下:
<input data-val="true" data-val-required="The DirBlocked field is required." id="DirBlocked" name="DirBlocked" type="hidden" value="True">
然而,当我在 POST 操作中执行以下代码时:
// Hard 'true' just for debugging.
//if (files.Any() && !HasDirAccess(model.UploadDir))
if (true)
{
model.DirBlocked = true;
return View(model);
}
相同的隐藏输入呈现如下:
<input data-val="true" data-val-required="The DirBlocked field is required." id="DirBlocked" name="DirBlocked" type="hidden" value="False">
也就是说,它丢失了分配给DirBlocked 属性的true 值。这可能是什么原因造成的?通常,当我在 POST 操作中执行 return View(model) 时,所有模型属性都会按照设置正确呈现。
【问题讨论】:
-
您要发布您的模型吗?我认为,model.DirBlocked 应该以 value = true 发回服务器,对吗?为什么需要将其重置为 true?
-
@Sarhang 为什么我将它设置为
true是因为如果发布的模型中的值等于另一个值,我需要重新显示视图并执行一些客户端代码。 -
参考this answer了解行为
标签: asp.net asp.net-mvc asp.net-core-mvc