Вставка данных в базу данных с помощью MVC
Когда я запускаю приведенный выше код он показывает следующую ошибку следующим образом
Ошибка сервера в приложении'/'.
Ресурс не может быть найден.
Описание: HTTP 404. Искомый ресурс (или одна из его зависимостей) может быть удален, изменено его имя или временно недоступен. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что он написан правильно.
Запрошенный URL-адрес: /User1/Details
Я правильно запускаю приложение
localhost:5129/User1/подробности
В чем ошибка в моем вышеприведенном коде?
Что я уже пробовал:
Мои модели кодируются следующим образом
public class UserDetails1 { public int UserId { get; set; } public string UserName { get; set; } public string Education { get; set; } public string Location { get; set; } public List<userdetails1> usersinfo { get; set; } }
Мой код контроллера выглядит следующим образом (имя контроллера как User1)
[HttpPost] public ActionResult Details(UserDetails1 user) { UserDetails1 objuser = new UserDetails1(); using (SqlConnection con = new SqlConnection("Data Source=Trenmax;Integrated Security=true;Initial Catalog=Sample")) { using (SqlCommand cmd = new SqlCommand("usercrudoperations", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@name", user.UserName); cmd.Parameters.AddWithValue("@education", user.Education); cmd.Parameters.AddWithValue("@location", user.Location); cmd.Parameters.AddWithValue("@status", "INSERT"); con.Open(); ViewData["result"] = cmd.ExecuteNonQuery(); con.Close(); } } return View(); }
Код моих представлений выглядит следующим образом (имя представления в виде деталей)
@using (Html.BeginForm("Details","User1",FormMethod.Post)) { <table> <tbody> <tr> <td>User Name:</td> <td>@Html.TextBoxFor(u=>u.UserName)</td> </tr> <tr> <td>Education:</td> <td>@Html.TextBoxFor(u => u.Education)</td> </tr> <tr> <td>Location:</td> <td>@Html.TextBoxFor(u=>u.Location)</td> </tr> <tr> <td></td> <td> </td> </tr> </tbody> </table> } <h4>User Details</h4> @if (Model != null) { if (Model.usersinfo.Count > 0) { @foreach (var item in Model.usersinfo) { } <table> <tbody> <tr> <th>UserId</th> <th>UserName</th> <th>Education</th> <th>Location</th> </tr> <tr> <td>@Html.DisplayFor(modelitem => item.UserId) </td> <td>@Html.DisplayFor(modelitem => item.UserName)</td> <td>@Html.DisplayFor(modelitem => item.Education)</td> <td>@Html.DisplayFor(modelitem => item.Location)</td> </tr> </tbody> </table> } else { <b>No Details Found.</b> } } <script> $(function () { var msg = '@ViewData["result"]'; if (msg == '1') { alert("User Details Inserted Successfully"); window.location.href = "@Url.Action("InsertUserDetails", "User")"; } }); </script>
Richard Deeming
Кажется, у вас нет действия под названием Details
который принимает GET
запрос.
[HttpGet] public ActionResult Details() { return View(); }
benjaminemanuel13
Еще одна проблема, с которой вы столкнетесь: ваш foreach находится в неправильном месте, они должны открываться и закрываться вокруг html-кода, содержащего ссылки на элемент. На самом деле петля должна быть после первой
<tr>...</tr>и должен закрыться до того, как
</tbody>таким образом, сгенерированный html-код будет состоять из строк.
Как и в этом случае:
@foreach (var item in Model.usersinfo){<tr>...</tr>}