У меня есть контроллер с именем StudentController, Index.cshtml и центральный layout.cschtml,Как перенаправить вид на другое действие на том же контроллере
Я делаю развитие переднего конца после очень долгого времени и работает на интерфейсе на asp.net mvc сейчас тихо для меня, поэтому, пожалуйста, простите меня, если что-то не так.
То, что я пытаюсь добиться в том, что, когда я бегу мое приложение это прекрасно работает найти, но когда я нажимаю ссылку Student успешно идет в индексном Student и нажмите Индексный метод в StudentController.
Но когда я нажимаю на ссылку Создать новый в представлении Index, то он дает ошибку (см внизу), может кто-то руководство, что я делаю неправильно ....
StudentController
public StudentController(){}
public ActionResult Index()
{
var students =_studentDb.GetAll();
return View(students);
}
[HttpPost]
public ActionResult Create(Student student)
{
var result = _studentDb.Insert(student);
return View("Create");
}
_layout.chtml
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", new { Controller = "Home", Area = "Common" })</li>
<li>@Html.ActionLink("Student", "Index", new { Controller = "Student", Area = "User" })</li>
<li>@Html.ActionLink("New Student", "Index", new { Controller = "CreateStudent", Area = "User" })</li>
</ul>
Index.chtml
@model IEnumerable<Student>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create",new {Controller="Student",Area="User" })
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.MiddleName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.Gender)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstNameAr)
</th>
<th>
@Html.DisplayNameFor(model => model.MiddleNameAr)
</th>
<th>
@Html.DisplayNameFor(model => model.LastNameAr)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.MiddleName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstNameAr)
</td>
<td>
@Html.DisplayFor(modelItem => item.MiddleNameAr)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastNameAr)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
Ошибка
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /User/Student/Create
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1055.0
У вас есть вид под названием «Создать»? –
Проблема в том, что вы пытаетесь «ПОЛУЧИТЬ» метод «POST». У вас есть действие '[HttpPost]' под названием Create - это то, к чему вы бы ПОСТ, чтобы создать ученика. Вам также нужен метод '[HttpGet]' Create, который является формой для ввода пользователем. – markpsmith
@PaulKaram, да У меня есть представление под названием Create – Shax