Вызов функции C # с помощью кнопки HTML onclick - PullRequest
1 голос
/ 25 июня 2019

Я работаю с asp.net (C #).Я создал страницу бритвы и хочу вызвать функцию в C # с помощью нажатия кнопки html.Функция выполняет алгоритм сопоставления, аналогичный проблеме стабильного брака.Например, когда администратор нажимает кнопку «Button1», должна быть вызвана функция match () в C #, которая должна выполнить операторы внутри функции и в конце вернуть соответствующий список.Я видел несколько общих ответов в форме, но мне нужно что-то более конкретное.Заранее спасибо

Как уже упоминалось, это алгоритм сопоставления - для выполнения двустороннего сопоставления с односторонним предпочтением.Я уже пробовал HTML-решение "Button1_Click".это очень общее и не соответствует моему коду.

это то, что я сделал до сих пор:

html код:

<form id="form1" runat="server">
    <button type="submit" id="cmdAction" text="Button1" runat="server">
        Button1
    </button>
</form>

  

Код C #:

public ActionResult OnGet()
{
if (NTUser.Role != Role.Admin)
{return RedirectToPage("/Denied");}
matching();
return RedirectToPage();
}    
public void matching()
{//body}

Кнопка, которую я использую на html-стороне, называется «Сопоставить и показать результат»

Я ожидаю, что результатом будет список, похожий на лист Excel, который можно отредактировать / удалить при необходимости.

Редактировать: Я также был бы признателен, если бы у кого-то была идея, как это сделать с помощью enum и / или bool

Ответы [ 4 ]

1 голос
/ 25 июня 2019

Вы можете вызвать один метод, где вы проверяете роль и перенаправляете на другое действие, или просто вызываете закрытый метод.

public ActionResult OnGet()
{
     if (NTUser.Role != Role.Admin)
     {
        return RedirectToPage("/Denied");
     }
     else
     {
        return RedirectToAction(Matching);
     }
      ...other if with return
}

public ActionResult Matching()
{
   //dosomething
}

вид

если вам нужен пост, используйте его

@using (Html.BeginForm("OnGet", "YourControllerName", FormMethod.Post))
{
    <button type="submit" id="cmdAction" runat="server">
        Match and Show the result
    </button>
}

если вам нужно просто получить

@Html.ActionLink("Match and Show the result", "OnGet", "YourControllerName") //without params

не забудьте добавить атрибут [HttpPost] или [HttpGet] (получите только для лучшего читабельности кода)

0 голосов
/ 25 июня 2019

Есть много способов сделать это, так как вы упомянули бритвенные страницы, поэтому я рекомендую просмотреть это руководство

Просто используйте синтаксис бритвы, как этот

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) { 
   <input type="submit" value="Match" />
}
0 голосов
/ 25 июня 2019

Попробуйте это:

<a href="@Url.Action("OnGet", "ControllerName"> Display Text</a>
0 голосов
/ 25 июня 2019

Все, что вы пытаетесь сделать, может быть сделано с помощью ajax, так как простая button_Click не будет работать с бритвой и MVC. Поэтому сделайте вызов ajax и выше, я предложу вам использовать Ajax.BeginForm, что намного проще.

https://www.c -sharpcorner.com / UploadFile / 0c1bb2 / Ajax-BeginForm-в-Asp-Net-MVC-5 /

взгляните на его статью. Начальная форма Ajax в основном позволяет получить доступ к методу успеха при возврате ответа ajax, чтобы вы могли получить доступ к результату, возвращенному из контроллера, в методе OnSuccess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...