Подтвердить что ты не робот

ASP.NET MVC получает входное значение текстового поля

У меня есть ввод текстового поля и некоторые переключатели. Например, мой ввод текстового ввода выглядит так:

<input type="text" name="IP" id="IP" />

Как только пользователь нажимает кнопку на веб-странице, я хочу передать данные моему контроллеру:

<input type="button" name="Add" value="@Resource.ButtonTitleAdd"  onclick="location.href='@Url.Action("Add", "Configure", new { ipValue [email protected][ValueOfTextBox], TypeId = 1 })'"/>

Возможно, это тривиально, но моя проблема в том, что я не знаю, как получить значение текстового поля и передать его контроллеру. Как я могу прочитать значение текстового поля и передать его контроллеру через [email protected][ValueOfTextBox]?

4b9b3361

Ответ 1

Простая форма подписки ASP.NET MVC с текстовым полем электронной почты будет реализована следующим образом:

Model

Данные из формы сопоставляются с этой моделью

public class SubscribeModel
{
    [Required]
    public string Email { get; set; }
}

Вид

Имя вида должно совпадать с именем метода контроллера.

@model App.Models.SubscribeModel

@using (Html.BeginForm("Subscribe", "Home", FormMethod.Post))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model => model.Email)
    <button type="submit">Subscribe</button>
}

контроллер

Контроллер отвечает за обработку запроса и возвращает правильный ответ.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Subscribe(SubscribeModel model)
    {
        if (ModelState.IsValid)
        {
            //TODO: SubscribeUser(model.Email);
        }

        return View("Index", model);
    }
}

Вот моя структура проекта. Обратите внимание: папка "Домашняя страница" соответствует имени HomeController.

Структура ASP.NET MVC

Ответ 2

Вы можете использовать jQuery:

<input type="text" name="IP" id="IP" value=""/>
@Html.ActionLink(@Resource.ButtonTitleAdd, "Add", "Configure", new { ipValue ="xxx", TypeId = "1" }, new {@class = "link"})

<script>
  $(function () {
    $('.link').click(function () {
      var ipvalue = $("#IP").val();
      this.href = this.href.replace("xxx", ipvalue);
    });
  });
</script>

Ответ 3

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

Вид:

@using (Html.BeginForm("Login", "Accounts", FormMethod.Post)) 
{
   <input type="text" name="IP" id="IP" />
   <input type="text" name="Name" id="Name" />

   <input type="submit" value="Login" />
}

Контроллер:

[HttpPost]
public ActionResult Login(string IP, string Name)
{
    string s1=IP;//
    string s2=Name;//
}

Если вы можете использовать класс модели

[HttpPost]
public ActionResult Login(ModelClassName obj)
{
    string s1=obj.IP;//
    string s2=obj.Name;//
}

Ответ 4

Другой способ: использовать метод ajax:

Просмотр:

@Html.TextBox("txtValue", null, new { placeholder = "Input value" })
<input type="button" value="Start" id="btnStart"  />

<script>
    $(function () {
        $('#btnStart').unbind('click');
        $('#btnStart').on('click', function () {
            $.ajax({
                url: "/yourControllerName/yourMethod",
                type: 'POST',
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: JSON.stringify({
                    txtValue: $("#txtValue").val()
                }),
                async: false
            });
       });
   });
</script>

Контроллер:

[HttpPost]
public EmptyResult YourMethod(string txtValue)
{
    // do what you want with txtValue
    ...
}