Как вы передаете данные из текстового поля в представлении в метод действия в контроллере?
У меня есть следующее мнение:
@model ReportViewer.Models.ViewModel.EntryViewModel @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> @using (Html.BeginForm("UserReportView", "HomeController", FormMethod.Post)) { <input id="UserToLookUp" type="text" width="50" name="UserToLookUp" /> @Html.TextBoxFor(model => model.UserToLookUp) <input type = "submit" value = "View" /> } </div> </body> </html>
Он использует следующую модель:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ReportViewer.Models.ViewModel { public class EntryViewModel { public string CurrentUser { get; set; } public string UserToLookUp { get; set; } } }
Мой контроллер выглядит следующим образом:
using ReportViewer.Models.ViewModel; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ReportViewer.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { EntryViewModel vm = new EntryViewModel(); return View(vm); } //[HttpPost] public ActionResult UserReportView(EntryViewModel vm) { TempData["ID"] = vm.UserToLookUp; return RedirectToAction("Index", "Viewer"); } } }
Мне нужно получить значение из текстового поля "UserToLookUp"в TempData ["ID"] ActionResult UserReportView. Виртуальная машина доступна в методе, но UserToLookUp всегда имеет значение null.
Что я уже пробовал:
Я провел большую часть последних двух дней, гугля и пробуя каждую перестановку вещей, которые я видел в различных учебниках, и не могу заставить ее работать.
j snooze
Если вы отлаживаете и устанавливаете точку останова, вы можете проверить, что свойство в объекте vm в вашем методе httppost пусто? Почему у вас есть HTML-разметка для userlookup и HTML-помощник mvc для нее? Вы просто пытаетесь одновременно увидеть, что прилипает? Если ваша Ручная HTML-разметка, я думаю, что имя должно быть "Object. Property", так что в вашем случае " EntityViewModel.UserLookup " для внутренней работы MVC, чтобы распознать, что нужно разместить обратно в нужном месте.