首页 > 解决方案 > 基于使用 JavaScript 的 Viewbag 的值在 MVC 表单上显示或隐藏字段

问题描述

我正在尝试隐藏或显示在 Viewbag 中存储的值的 MVC 表单基础上归档。Viewbag 的值是一个数据库返回。我可以在我的 JavaScript 中看到 Viewbag 的值,但是当我运行表单时,隐藏/显示功能不起作用。我错过了什么有人可以帮忙吗

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);
}

标签: javascriptc#jqueryasp.net-mvc

解决方案


您应该更改 viewbag 分配:

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

消除

style="display:none"

在你的 javasctipt 中

if (AssetShared1 == 'True') {

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

但如果您使用引导程序更好地使用:

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

推荐阅读