Есть простейшее MVC приложение из кнопки <button> и текстового поля <text>. Как при клике на кнопку изменить текст в <text>?
У меня вот такой контроллер :
public class TableController : Controller
{
[HttpGet]
public ActionResult Index()
{
ViewBag.ListViewTable = ListButtonName.CollectionNames;
ViewBag.ConcretString = "Empty";
return View();
}
[HttpPost]
public ActionResult GetName(object sender)
{
ViewBag.ConcretString = "!!!";
return View();
}
}
И сгенерированное View :
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<table>
@foreach (var item in ViewBag.ListViewTable)
{
<tr><td><button onclick="location.href='@Url.Action("GetName")'" id="@item">@item</button></td></tr>
}
</table>
</div>
<div>
<text>@ViewBag.ConcretString</text>
</div>
</body>
</html>
В ответ возвращается ошибка :
Не удалось найти данный ресурс.
Запрошенный URL: /Table/GetName
Как правильно реализовать команду в MVC ?
Ошибка происходит из-за атрибута [HttpPost] на методе контроллера GetName, так как в результате присвоения location.href= ... выполняется GET запрос.
public class TableController : Controller
{
[HttpGet]
public ActionResult Index(string id)
{
ViewBag.ListViewTable = ListButtonName.CollectionNames;
ViewBag.ConcretString = "Empty";
if (!string.IsNullOrEmoty(id))
ViewBag.ConcretString = "!!!" + id + "!!!";
return View();
}
}
@foreach (string item in ViewBag.ListViewTable)
{
<tr><td>@Html.ActionLink(item, "Index", new { id = item })</td></tr>
}
Продвижение своими сайтами как стратегия роста и независимости