2013-03-27 3 views
1

Я работаю над проектом ASP.NET MVC 4, это своего рода инструмент оценки. На мой взгляд CoWorkers, я заполняю данные, данные из базы данных. В первом столбце я показываю имя, во втором столбце я показываю ссылку на свои личные файлы. Вид этого в частичном названии «PersoonlijkeFichePartial», поэтому, когда я нажимаю ссылку в файле данных, он должен открыть частичное в div под данным datatable. Я делаю это с помощью ajax-звонка. Но я результат div пуст, я не хочу видеть это на мой взгляд, поэтому я сделал с jquery. Теперь проблема, когда я нажимаю на ссылку в моей DataTable (с вызовом AJAX), результат DIV обыкновение показать себя (я нужен какой-то обратный вызов?)Ajax Callback для функции jquery

EDIT Нет необходимости для меня опубликуйте мое действие с контроллером, если я вырезал код jquery, который скрывает результат div, частичный вид виден (когда я нажал ссылку в моей таблице ofc), но мне нужен код, чтобы скрыть этот div, так что это не там, прежде чем кто-либо щелкнул по ссылке в моей таблице.

Вот код:

<div class="ContentDiv"> 
    <table id="table_id" class="display"> 
     <thead> 
      <tr> 
       <th> 
        @Html.DisplayNameFor(model => model.Naam) 
       </th> 
       <th>Persoonlijke Fiche 
       </th> 
       <th>Functiebeschrijving 
       </th> 
      </tr> 
     </thead> 
     <tbody> 
      @foreach (var item in Model) 
      { 
       <tr> 
        <td> 
        @Html.DisplayFor(modelItem => item.Naam) 
        <td> 
         @Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result"}) 
        </td> 
        <td> 
         @Html.ActionLink("Functiebeschrijving", "Details", new { account = item.Account }) 
        </td> 
       </tr> 
      } 
     </tbody> 
    </table> 
</div> 
<div id="generate" class="ContentDiv"> 
    <div id="result"></div> 
</div> 



@section scripts { 
    <script type="text/javascript" src="~/Scripts/jquery.dataTables.js"></script> 
    <script> 
     $(document).ready(function() { 
      $('#table_id').dataTable({ 
       "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {  "bSortable": false }] 
      } 
       ); 
     }); 
     $(function() { 
      if ($("div#result").html() == "") { 
       $("div#generate").hide(); 
      } 
     }); 
    </script> 
} 
+0

Является ли это просто мной или делает asp.net действительно полной путаницей из простых вещей? –

ответ

1

Попробуйте изменить ваш код, как это:

<script> 
     $(document).ready(function() { 
      $('#table_id').dataTable({ 
       "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {  "bSortable": false }] 
      }); 
      toggleResultDiv() 
     }); 

     function toggleResultDiv() { 
      if ($("div#result").html() == "") { 
       $("div#generate").hide(); 
      } 
      else $("div#generate").show(); 
     } 
    </script> 

и изменить свой Ajax вызов, как это:

@Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result", OnSuccess = "toggleResultDiv"}) 

Вы должны вызвать вашу функцию который показывает или скрывает div. В вашем случае это называется только один раз и всегда скрывается div#generate

Смежные вопросы