Malikdanish Ответов: 1

Как вызвать простой метод из контроллера в MVC


Я новичок в MVC я написал простой метод отправки SMS в своем домашнем контроллере как показано ниже
[HttpPost]
      public ActionResult SendSMS()
      {
         // TheTextingDemo.Models.ConfigurationSettings s1 = new Models.ConfigurationSettings();
         // string API_KeY = s1.API_KEY;
          string API_KEY = "<removed>";
          string API_SECRET = "<removed>";
          string TO = "<removed>";
          string Message = "Hello world";
          string sURL;
          StreamReader objReader;

          sURL = "https://www.thetexting.com/rest/sms/json/message/send?api_key=" + API_KEY + "&api_secret=" + API_SECRET + "&to=" + TO + "&text=" + Message;
          WebRequest wrGETURL;
          wrGETURL = WebRequest.Create(sURL);
          try
          {
              Stream objStream;
              objStream = wrGETURL.GetResponse().GetResponseStream();
              objReader = new StreamReader(objStream);
              objReader.Close();
          }
          catch (Exception ex)
          {
              ex.ToString();
          }
        return View();
      }
      public ActionResult About()
      {
          ViewBag.Message = "Your application description page.";

          return View();
      }


на моей домашней странице Я показал форму с некоторыми текстовыми полями я хочу вызвать этот метод я не хочу менять вид ниже мой html
@model  TheTextingDemo.Models.ConfigurationSettings


<h2>TheTexting SMS GateWay Demo</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
@using (Html.BeginForm())
{
    <div>
        <fieldset>
            <legend>Account Information</legend>
            <div>
                @Html.LabelFor(model => model.API_KEY)
            </div>
            <div>
                @Html.TextBoxFor(model => model.API_KEY)
                @*@Html.ValidationMessageFor(model => model.API_KEY)*@
            </div>
            <div>
                @Html.LabelFor(model => model.API_SECRET)
            </div>
            <div>
                @Html.TextBoxFor(model => model.API_SECRET)
                @*@Html.ValidationMessageFor(model => model.API_SECRET)*@
            </div>
            <div>

                @Html.LabelFor(a => a.To_Number)


            </div>
            <div>

                @Html.TextBoxFor(a => a.To_Number)
                @*@Html.ValidationMessageFor(a => a.To_Number)*@
            </div>
            <div>
                @Html.LabelFor(a => a.TextMessage)


            </div>
            <div>

                @Html.TextBoxFor(a => a.TextMessage)
                @*@Html.ValidationMessageFor(a => a.TextMessage)*@
            </div>

            <br />

            <a href="@Url.Action("SendSMS", "Home")">Add an Admin</a>
          @Url.Action("SendSMS", "Home")
            <input id="Submit" type="submit" value="SendSMS" />

          
        </fieldset>
    </div>

}


Как вызвать этот метод я пробовал несколько способов, но он говорит
The resource cannot be found.
погода я не хочу перенаправлять на следующий вид

Что я уже пробовал:

Я перепробовал множество способов url. action и многие другие

Afzaal Ahmad Zeeshan

Помните, что никогда не делитесь своим номером телефона, адресом электронной почты, паролями или личными токенами или ключами онлайн. Люди здесь не хорошие, и они обязательно будут использовать эти ценности во зло; спамить вас, использовать ваши ресурсы, посылать угрозы кому-то, подражающему вам.

Быть безопасным. Никогда не делитесь никакими учетными данными, если кто-то хочет помочь, он сделает это, используя предоставленные ресурсы, и уйдет, если не сможет.

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Ресурс не может быть найден (404) означает, что вы не используете правильный URL-адрес для доступа к нему, ваш ресурс находится в каком-то другом месте. Либо вы неправильно настроили приложение, либо вам нужно проверить доступ к URL-адресу. Что это такое, знаешь только ты.

Одна вещь, которую я могу с уверенностью сказать вам, это то, что вам нужно использовать HTTP POST запрос, так как ваша функция помечена как POST acceptor, для этого вам нужно написать это в форме; или с помощью JavaScript изменить метод запроса на POST, что будет непросто. Попробовать это,

@using (Html.BeginForm("SendSMS", "Home", FormMethod.Post))

Это отправит запрос на сервер при отправке с использованием POST verb; ASP.NET приму его и на этот раз Обратите внимание, что он будет только отправлять запрос, но никакие данные не будут считываться на стороне сервера, это заставляет меня много думать, например, почему вы вообще хотите это сделать? Почему бы не создать простой интерфейс или бэкэнд-класс, который обрабатывает их, и вы только это делаете,
smsHelper.SendSms(); 

Что будет гораздо безопаснее способ сделать это. Это также поможет вам изменить ваш код позже, если вы захотите внести какие-либо дополнительные изменения.


Malikdanish

Спасибо Afzaal Ahmad Zeeshan, в основном у меня есть простое представление MVC с четырьмя метками и четырьмя текстовыми полями, я использую API для отправки sms на любой номер, чтобы мои текстовые поля имели значения
1-API_KEY (требуется для отправки sms с API шлюза типа thetexting.com)
2-API_SECRET(также требуется......)
3-TO_Number ( на который я хочу отправить sms)
4-сообщение(сообщение, которое нужно отправить)
для этого я пишу простое имя класса класс конфигурации
настройки общедоступных классов
{


[Ключ]
[ScaffoldColumn (false)]
public int RecordID { get; set; }
// [Требуется (ErrorMessage = " требуется имя сотрудника")]
//public string EmployeeName { get; set; }
// [Не требуется(требуется сообщение об ошибке = ""Кодсотрудника" ")]
// public int EmployeeID { get; set; }
[Требуется (ErrorMessage = " требуется API_KEY")]
публичная строка API_KEY { get; set; }
[Требуется (ErrorMessage = " требуется API_SECRET")]
публичная строка API_SECRET { get; set; }
[Требуется (ErrorMessage = " требуется адрес API_SECRET")]

[Display(Name = " To_Number")]
public int To_Number { get; set; }
[Требуется (ErrorMessage = " To_Number требуется")]

[Тип Данных(DataType.Номер телефона)]

публичная строка TextMessage { get; set; }



и мой взгляд таков

@model TheTextingDemo.Модели.ConfigurationSettings


TheTexting СМС демо шлюз



&ЛТ;скрипт СРЦ="@URL-адрес.Содержание("~/Scripts/jquery.validate.min.js")" тип="текст/JavaScript"&ГТ;
& lt;script src= " @Url. Content ("~/Scripts/jquery.validate.unobtrusive.min.js") "type=" text/javascript " >
@Html. ValidationSummary (true, " вход в систему был неудачным. Пожалуйста, исправьте ошибки и повторите попытку.")
@using (Html. BeginForm())
{


информация о счете

@Html. LabelFor(model = & gt; model.ключ API)



@HTML-код.TextBoxFor(модель =&ГТ; модель.ключ API)
@ * @Html. ValidationMessageFor(model = & gt; model.ключ API)*@


@Html. LabelFor(model = & gt; model.API_SECRET)


@HTML-код.TextBoxFor(модель =&ГТ; модель.API_SECRET)
@ * @Html. ValidationMessageFor(model = & gt; model.API_SECRET)*@



@HTML-код.LabelFor(а => у собой.To_Number)





@HTML-код.TextBoxFor(а => у собой.To_Number)
@ * @Html. ValidationMessageFor(a => a. To_Number)*@


@HTML-код.LabelFor(а => у собой.TextMessage)





@HTML-код.TextBoxFor(а => у собой.TextMessage)
@Html. ValidationMessageFor(a => a. TextMessage)




@*@формат HTML.ActionLink ("текст ссылки", "SendSMS", "Home", null, null)
Добавить администратора
@Url. Action("SendSMS", " Home")
*@





}
а мой метод таков
public ActionResult SendSMS(ConfigurationSettings sm)
{

// TheTextingDemo.Модели.Конфигурационные настройки s1 = новые модели.ConfigurationSettings();
//string API_KeY = запрос.QueryString ["txtRate"].Метод toString();
строка API_KEY = " wwpiub1gcfk49a1";
строка API_SECRET = " j5hsuac8f6mdzdd";
строка TO = " 923215029981";
строковое сообщение = " Привет, мир";
строки злюк;
Что streamreader objReader;
// строка ssurl="https://www.thetexting.com/rest/sms/json/message/send?api_key=wwpiub1gcfka1&api_secret=j5hsf6mdzdd&to=9232199999981&text=Hello"
злюк = "https://www.thetexting.com/rest/sms/json/message/send?api_key=" + API_KEY + "&амп;api_secret=" + API_SECRET + "&амп;к=" + к + "&амп;текст=" + сообщение;
Запросы WebRequest wrGETURL;

Malikdanish

Когда я удаляю [httppost] и ставлю точку останова отладки, то дело доходит до метода, но когда я делаю это
httppost тогда он не подходит к моему методу

Afzaal Ahmad Zeeshan

Да, это потому, что при удалении вы принимаете любой HTTP-запрос, но с POST вы спрашиваете ASP.NET выполнить это действие можно только в том случае, если запрос имеет тип POST.

Malikdanish

У меня есть простой индексный вид в котором у меня есть пять текстовых полей и у меня есть метод в домашнем контроллере я хочу получить вызов этого метода по кнопке щелчок кнопки размещенной на индексном методе как этого добиться могу ли я отправить вам свой код по электронной почте