Как я могу вызвать метод контроллера с тегом привязки, который имеет атрибут "href"? - PullRequest
2 голосов
/ 30 января 2020

У меня есть кнопка «Поделиться» в «Фейсбуке»,

<div class="fb-share-button" 
     data-href="https://localhost:5001/venue/details/@Model.Id"
     data-layout="button_count" data-size="large">
  <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Flocalhost%3A5001%2Fvenue%2Fdetails%2F@Model.Id%3Fq%3Dgaurav-acharya&amp;src=sdkpreparse" class="fb-xfbml-parse-ignore">
    Share
  </a>
</div>

Итак, когда пользователь нажимает на нее, я хочу сохранить некоторые данные в Таблице общих ресурсов моей базы данных, скажем, я хочу вызвать метод контроллера » https://localhost: 5001 / место проведения / доля? Vid = 88 .

В моем контроллере у меня есть

public void Share(int vid)
        {
            Share share = new Share();
            share.UserName = GetUserName(_userManager);
            share.VenueId = vid;
            Console.WriteLine(vid);
            _context.Shares.Add(share);
            _context.SaveChanges();
        }

Ответы [ 2 ]

1 голос
/ 30 января 2020

Вы можете использовать JQuery и AJAX для отправки данных на контроллер для сохранения данных.


Когда пользователь нажимает кнопку, активируйте функцию Javascript для получения data-href и публикации данных. на бэкэнд.

пс. не забудьте включить библиотеку jquery.

Просто пример:

FBShare View:

<h1>FBShare</h1>

<div name ="shareButton"
     class="fb-share-button" 
     data-href="https://localhost:5001/venue/details/100"
     data-layout="button_count" data-size="large">
    <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Flocalhost%3A5001%2Fvenue%2Fdetails%2F@Model.Id%3Fq%3Dgaurav-acharya&amp;src=sdkpreparse" class="fb-xfbml-parse-ignore">
        Share
    </a>
</div>
<script
    src="https://code.jquery.com/jquery-3.4.1.min.js"
    crossorigin="anonymous"></script>
<script>
    $('[name="shareButton"]').on("click",saveData);
    function saveData() {
        var data_href = $('[name="shareButton"]').attr('data-href');
        $.post("SaveShare", { url: data_href } );
    }
</script>

Контроллер:

public IActionResult FBShare()
{
    return View();
}

[HttpPost]
public void SaveShare(string url)
{
    Console.WriteLine(url);
    // Save url data
}
0 голосов
/ 30 января 2020

Вы можете использовать ajax.

<div class="fb-share-button" 
 data-href="https://localhost:5001/venue/details/@Model.Id"
 data-layout="button_count" data-size="large">
 <a id="fbLink" onclick="saveInfo(@Model.Id)" class="fb-xfbml-parse-ignore">
Share
 </a>
</div>
<script>
  function saveInfo(int vid){
    var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
        location.replace("https://www.facebook.com/sharer/sharer.php? 
        u=https%3A%2F%2Flocalhost%3A5001%2Fvenue%2Fdetails%2F@Model.Id%3Fq%3Dgaurav- 
        acharya&amp;src=sdkpreparse")
       }
     };
 xhttp.open("GET", "/venue/Share?vid=" + vid, true);
 xhttp.send();
 }
</script>
...