@using (Html.BeginForm("SerialNumber", "Test", FormMethod.Get))
{
<div class = "form-group">
<label class = "control-label col-md-8 col-sm-3 col-xs-12" for = "color-name">
Serial Number <span class = "required">*</span>
</label>
<div class = "col-md-4 col-sm-6 col-xs-12 input-group">
@Html.TextBox("serial_number", null, new { @id = "txtSearch", @class = "form-control col-md-7 col-xs-12", type = "text", required = "required" })
<span class = "btn btn-default input-group-addon">
<span class = "glyphicon glyphicon-barcode"></span>
</span>
</div>
<input type = "submit" value = "Search" class = "btn btn-primary" />
</div>
}
Я пытаюсь передать значение TextBox "serial_number" в ActionResult "SerialNumber" контроллера тестирования. Но значение передается только в ActionResult «AddSerialNumber» контроллера тестирования. Я старался изо всех сил, но не нашел решения. Пожалуйста помоги.
public ActionResult AddSerialNumber()
{
return View(db.sales.ToList());
}
[HttpGet]
public ActionResult SerialNumber(int serial_number)
{
...
return View();
}
У вас на рутеКарта есть что-то странное?
Есть ли другой код (...) в ActionResult SerialNumber?
В вашей форме есть FormMethod.Get? !!
Да, есть другой код для добавления данных из этого serial_number. @RickL
Хорошо, но я искал что-то, что могло бы перенаправить на AddSerialNumber, например if (! ModelState.IsValid)
Да, его FormMethod.Get. Я тоже пробовал метод Post, но он не работал. Но из метода Get, если я изменяю AddSerialNumber на SerialNumber в URL-адресе, остальная часть кода работает правильно, получая этот serial_number из TextBox. @ Wheels73
@AnupShrestha - Прежде всего, я бы рекомендовал использовать строго типизированную модель для вашего представления. Затем я бы также использовал Html.TextBoxFor для привязки значений, введенных к модели. Измените метод формы на Post, измените подпись метода вашего контроллера, чтобы принять модель, затем украсьте метод HttpPost, и все должно быть хорошо
Нет ничего, что могло бы перенаправить на AddSerialNumber. Есть код для добавления данных в таблицу, получая SerialNumber из TextBox. Код работает нормально, если я заменяю AddSerialNumber на SerialNumber в URL-адресе вручную после передачи значения в TextField. @RickL
@Anup Shrestha - эта форма вложена в другую форму, которая переходит в AddSerialNumber?
@RickL НЕТ, есть только одна форма. Эта форма находится в представлении AddSerialNumber.
@RickL Спасибо, сэр. Я обнаружил ошибку. Вы были правы, я использовал html.BeginForm внутри HTML-формы. Большое спасибо. :)





[HttpGet]
public ActionResult SerialNumber(string serial_number)
{
...
return View();
}
Вы должны использовать строковую переменную для получения значения текстового поля.
Спасибо за ответ, но здесь дело обстоит не так.
Я думаю, с HttpGet вы не можете отправлять данные в действие контроллера.
Попробуйте опубликовать данные с помощью formmethod POST и с аннотацией POST для метода controller action.
и укажите идентификатор как serial_number для текстового поля, которое вы указали как txtSearch
@using (Html.BeginForm("SerialNumber", "Test", FormMethod.POST))
{
<div class = "form-group">
<label class = "control-label col-md-8 col-sm-3 col-xs-12" for = "color-name">
Serial Number <span class = "required">*</span>
</label>
<div class = "col-md-4 col-sm-6 col-xs-12 input-group">
@Html.TextBox("serial_number", null, new { @id = "serial_number", @class = "form-control col-md-7 col-xs-12", type = "text", required = "required" })
<span class = "btn btn-default input-group-addon">
<span class = "glyphicon glyphicon-barcode"></span>
</span>
</div>
<input type = "submit" value = "Search" class = "btn btn-primary" />
</div>
}
[HttpPost]
public ActionResult SerialNumber(string serial_number)
{
...
return View();
}
попробуйте следующий подход.
Создайте свою модель представления и, возможно, класс для удержания продаж.
public class ViewModel
{
public List<Sale> Sales { get; set; }
public string SerialNumber { get; set; }
}
public class Sale
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
затем в вашем контроллере выполните следующие действия.
[HttpGet]
public ActionResult AddSerialNumber()
{
var myModel = new ViewModel();
myModel.Sales = db.sales.ToList();
return View(myModel);
}
[HttpPost]
public ActionResult SerialNumber(ViewModel modelPosted)
{
//Do stuf with model
return View();
}
Затем создайте свое представление из модели и измените его на директиву Post.
@model ViewModel
@using (Html.BeginForm("SerialNumber", "Test", FormMethod.Post))
{
<div class = "form-group">
<label class = "control-label col-md-8 col-sm-3 col-xs-12" for = "color-name">
Serial Number <span class = "required">*</span>
</label>
<div class = "col-md-4 col-sm-6 col-xs-12 input-group">
@Html.TextBoxFor(x=> x.SerialNumber, new { @class = "form-control col-md-7 col-xs-12", required = "required" })
<span class = "btn btn-default input-group-addon">
<span class = "glyphicon glyphicon-barcode"></span>
</span>
</div>
<input type = "submit" value = "Search" class = "btn btn-primary" />
</div>
}
Затем это будет опубликовано на вашем контроллере. У меня была простая локальная настройка, и она работает.
Надеюсь, это поможет.
Пс. должен идти .. так что удачи
Я предполагаю, что вы украсили
SerialNumberатрибутом[HttpPost]