Я пытаюсь использовать ASP. NET MVC для получения пользовательского ввода через Html.BeginForm()
и отображения того, что пользователь ввел на той же странице / представлении. Проблема, с которой я сталкиваюсь, заключается в том, что после того, как пользователь нажимает кнопку отправки, данные не отображаются.
Вот как настроен мой проект, В Index.cshtml
:
@model SynNetTest.Models.HomeModel
@{
ViewData["Title"] = "Home Page";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="text-center"
<h2>The current directory: @Model.directory</h2>
<h3>@Model.Load()</h3>
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<table cellpadding="0" cellspacing="0">
<tr>
<th colspan="2" align="center">Word Details</th>
</tr>
<tr>
<td>Enter Word: </td>
<td>
@Html.TextBoxFor(m => m.word)
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
}
<h4>The word entered: @Model.word</h4>
</div>
В HomeModel.cs
:
public class HomeModel
{
public string directory { get; set; }
public WordNetEngine wordNet { get; set; }
public string word { get; set; }
public List<SynSet> synSetList { get; set; }
//load words to access
public string Load()
{
wordNet.AddDataSource(new StreamReader(Path.Combine(directory, "data.adj")), PartOfSpeech.Adjective);
wordNet.Load();
return "Database Loaded Successfully";
}
}
In HomeController.cs
:
public class HomeController : Controller
{
public IActionResult Index()
{
var home = new HomeModel()
{
directory = Directory.GetCurrentDirectory(),
wordNet = new WordNetEngine(),
};
return View(home);
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
Я работаю с пакетом Syn.Wor dNet NuGet, чтобы попытаться получить определения слов, которые пользователь вводит для печати вне. Пока что я просто пытаюсь проверить, можно ли обработать ввод и поместить на ту же страницу / представление.