Я пытаюсь скрыть или показать в базе формы MVC значение, хранящееся в Viewbag. значение Viewbag - это возврат из базы данных. Я вижу значение Viewbag в моем JavaScript, но когда я запускаю форму, функция Hide / Show не работает. Я что-то упускаю, может кто-нибудь помочь

HTML код

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

}

Код C # для сохраненного значения Viewbag

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);
}
0
Eric Aime Tchatchoua 24 Фев 2021 в 14:05

2 ответа

Лучший ответ

Вы должны изменить назначение viewbag:

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

Удалять

style="display:none"

И в вашем javascript

if (AssetShared1 == 'True') {

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

Но если вы используете бутстрап, лучше использовать:

if (AssetShared1 == 'True') {
$('#SharedAssetShared').removeClass("d-none");
}
    else {
  $('#SharedAssetShared').addClass("d-none");
    
  }
1
Sergey 24 Фев 2021 в 12:49

Попробуйте зарегистрировать свой AssetShared1 в консоли браузера.

console.log(AssetShared1);

Если он говорит True, как у меня, ваш код меняется на:

if (AssetShared1 == 'True') {
   $("#SharedAssetShared").show();
}
0
SlobodanT 24 Фев 2021 в 11:35