使用JavaScript根据Viewbag的值在MVC表单上显示或隐藏字段



我试图隐藏或显示MVC表单上存储在Viewbag中的值基础上的文件。Viewbag的值是一个数据库返回值。我可以看到Viewbag的值在我的JavaScript,但当我运行的形式隐藏/显示功能不工作。我缺了点东西,有人能帮我吗?

CHTML代码

<div class="form-group" id="SharedAssetShared" style="display:none">
<div class="form-group">
<div class="row">
<div class="col-md-2">
<label class="control-label ">If yes, what is the Legal basis for sharing? </label>
</div>
<div class="col-md-10">
<input asp-for="LegalBasisforSharing" class="form-control" />
<span asp-validation-for="LegalBasisforSharing" class="text-danger"></span>
</div>
</div>
</div>

Javascript代码

$(document).ready(function () {
divAsset();
});
function divAsset() {
var AssetShared1 = '@ViewBag.AssetShared';
if (AssetShared1 == 'true') {
$("#SharedAssetShared").show();

}
else {
$("#SharedAssetShared").hide();

}
}
存储Viewbag值的c#代码
public async Task<IActionResult> Edit(int? id)
{
var asset = await _context.VwAllUserAssets.Where(x => x.Id == id).FirstOrDefaultAsync();
ViewBag.AssetShared = asset.AssetShared;

return View(asset);
}

你应该改变viewbag分配:

ViewBag.AssetShared = asset.AssetShared.ToString();

删除

style="display:none"

和javascript中的

if (AssetShared1 == 'True') {
$('#SharedAssetShared').css("display","block");
}
else {
$('#SharedAssetShared').css('display','none');

}

,但如果你使用bootstrap,最好使用:

if (AssetShared1 == 'True') {
$('#SharedAssetShared').removeClass("d-none");
}
else {
$('#SharedAssetShared').addClass("d-none");

}

尝试在浏览器控制台中记录您的AssetShared1。

console.log(AssetShared1);

如果它像我的一样显示为True,那么你的代码将改为:

if (AssetShared1 == 'True') {
$("#SharedAssetShared").show();
}

最新更新