Маршрутизация не идет в почтовую часть контроллера - PullRequest
0 голосов
/ 05 апреля 2019

Я не могу попасть в часть HttpPost контроллера.

Я создал другой контроллер, и проблема та же

Я работал нормально до

Я добавил теги [Маршрут ("CrearSolicitud")] [HttpPost, ActionName ("CrearSolicitud")]

Я ничего не добавил в часть маршрутизации

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

Идет к http://localhost:55935/Solicitudes вместо http://localhost:55935/Solicitudes/CrearSolicitud

public class SolicitudesController : Controller
    {
        ApplicationDbContext db = new ApplicationDbContext();

        // GET: Solicitudes
        public ActionResult Index() 
        {
            return View();
        }

        //Get
        public ActionResult Solicitud()
        {
            return View();
        }

        //Post        
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Solicitud(Solicitudes s)
        {
            s.Id = "e17cba68-0a0b-4d6e-abaf-8026cb91fcd1";
            s.fk_tipo_transaccion = 3;
            s.fk_estado_solicitud = 1;
            db.Solicitudes.Add(s);
            db.SaveChanges();
            return View();
        }

Вид

@model HGRecursosHumanos4.Models.Solicitudes

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (@Html.BeginForm("CrearSolicitud", "Solicitudes", FormMethod.Post))
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="container">
        <div class="form-group col-md-5">
            @Html.LabelFor(model => model.VacacionesDias, htmlAttributes: new { @class = "control-label col-md-4" })
            <div class="col-md-3">
                @Html.EditorFor(model => model.VacacionesDias, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.VacacionesDias, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group col-md-5">
            @Html.LabelFor(model => model.FechaInicio, htmlAttributes: new { @class = "control-label col-md-3" })
            <div class="col-md-5">
                <input type="date" id="fechaInicio" name="fechaInicio" class="Filtros form-control input-sm" />
            </div>
        </div>



        <div class="form-group col-md-2">
            <div class="col-md-offset-2 col-md-3">
                <input type="submit" value="Solicitar" class="btn btn-success" />
            </div>
        </div>
    </div>
</div>
}

Когда я использую форму и нажимаю кнопку отправки, или приложение переходит в индекс или снова в то же представление

Это как EF разорился или что-то в этом роде

Я добавил, что появляется ошибка. Представление «CrearSolicitud» или его основное представление не найдено, или нет поисковой системы, поддерживающей местоположения поиска. Мы искали в следующих местах:

~/Views/Solicitudes/CrearSolicitud.aspx
~/Views/Solicitudes/CrearSolicitud.ascx
~/Views/Shared/CrearSolicitud.aspx
~/Views/Shared/CrearSolicitud.ascx
~/Views/Solicitudes/CrearSolicitud.cshtml
~/Views/Solicitudes/CrearSolicitud.vbhtml
~/Views/Shared/CrearSolicitud.cshtml
~/Views/Shared/CrearSolicitud.vbhtml 

@Nemanja      I certainly don´t have that view, if I use the same name on the post and no the get, the application goes to the get part again

1 Ответ

0 голосов
/ 05 апреля 2019

У меня есть решение.

Дело в том, что индекс предназначен для отображения списка добавленных реестров, когда он заменен на что-то другое, вы не можете видеть этот список, и это приводит к неверным выводам.

Маршрутизация работает нормально, программа делает то, что должна делать, RedirectToAction ("Index") в порядке.

Урок: уделите немного времени и подумайте о том, что вы меняете, и попытайтесь следовать образу действий VS.

Я тестировал сейчас, и он работает

 ApplicationDbContext db = new ApplicationDbContext();

            // GET: Solicitudes
            public ActionResult Index()
            {
                return View();
            }

            public ActionResult Index2()
            {
                return View(db.Solicitudes.ToList());
            }

            //Get
            public ActionResult Solicitud()
            {
                return View();
            }

            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Solicitud(Solicitudes s)
            {
                try
                {
                    if (ModelState.IsValid)
                    {                 

                        s.FechaFinal = DateTime.Now;
                        s.FechaYHoraSolicitud = DateTime.Now;
                        s.Id = "e17cba68-0a0b-4d6e-abaf-8026cb91fcd1";
                        s.fk_tipo_transaccion = 3;
                        s.fk_estado_solicitud = 1;
                        db.Solicitudes.Add(s);
                        db.SaveChanges();
                        ViewBag.Message = "Solicitud guardada";
                        ModelState.Clear();
                        return RedirectToAction("Index2");
                    }
                    return View("ModelStateError");
                }
                //catch
                catch (Exception ex)
                {
                    //throw ex;
                    Console.WriteLine(ex.Message);
                    return View("Error");
                }
            } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...