Возвращаясь к одному из комментариев:
Я не отговаривал вас от использования HTML Помощников. Я просто имел в виду то, как вы построили форму и использовали ActionLink
, неправильно. И было бы проще просто ввести ключ продукта внутри формы, если это единственное, что вы хотите отправить обратно на сервер.
И я очень рекомендую вам прочитать документацию от Microsoft , по крайней мере, этот: https://dotnet.microsoft.com/apps/aspnet/mvc, чтобы понять, что такое MVC. Из вашего примера кода я вообще не видел, чтобы вы использовали M - Model
.
В любом случае, если вы просто хотите получить ключ продукта, который вводит пользователь, я бы сделал это так:
Определите контроллер
Мне не нравится идея помещать все в / home (т.е. HomeController
). Только подумайте об URL-адресе страницы, который будет понятен пользователю.
Теперь я догадываюсь, что вы пытаетесь сделать. Я видел такие термины, как ключи продукта и пробные ключи. А как насчет контроллера под названием ProductKeyController
:
public class ProductKeyController : Controller
{
// This corresponds to /productkeys, and you can list all the product keys
// on the view it returns.
public ActionResult Index()
{
return View();
}
// This corresponds to /productkeys/create, and you can create a specific product
// key by asking the user to provide a trial key?
// The view this returns might be the page where you build the form
public ActionResult Create()
{
...
return View();
}
// This corresponds the form post.
[HttpPost]
public ActionResult Create(CreateProductKeyViewModel model)
{
...
return View(model);
}
}
Модель представления
Ваш MVC контроллер отвечает за выборку данных, при необходимости, построение модели представления и передачу ее представлению. Когда вы создаете ключ продукта, если вам нужно попросить пользователя ввести что-либо, вы можете объявить модель и свойства в ней:
public class CreateProductKeyViewModel
{
[Required]
[Display(Name = "Trial Key")]
[MaxLength(22)]
public string TrialKey { get; set; }
}
The View Create.cs html
Поскольку вы знаете, что контроллер будет передавать модель представления представлению, вы можете объявить его поверх представления, чтобы все, что вы делаете с моделью представления внутри представления строго типизировано.
@model CreateProductViewModel
@{
Layout = "xxx";
}
<h1>Enter The Core-i Product Key (format RST 102A08R EPCA 00007)</h1>
@using(Html.BeginForm("create", "productKey", new { area = "" }, FormMethod.Post))
{
@Html.LabelFor(x => x.TrialKey)
@Html.TextBoxFor(x => x.TrialKey)
<button type="submit">Create</button>
}
Видите, как все в представлении строго типизировано? Вам не нужно вручную создавать форму и ввод для запроса у пользователя пробного ключа.
И когда пользователь вводит пробный ключ и нажимает кнопку «Отправить», он отправляет сообщение обратно методу Post Create
. Поскольку представление объявляется с моделью представления, а модель представления является параметром метода create, MVC уже выполнил привязку модели для вас, поэтому вы получите обратно то, что пользователь ввел в посте.
Это хотя бы то, что вам нужно.
Примечание: Я все написал вручную. Не тестировалось.