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]
?
Ответы
Ответ 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
...
}