MVC Перенаправление на другую страницу Ошибка результата 404 Ресурс не найден - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь перенаправить на другую страницу, в результате чего ошибка 404 не удается решить

Моя страница просмотра UserDashBoard.cshtml "с кодом,

<fieldset >
    <legend > User DashBoard </legend>

    @if(Session["UserName"] != null)
    { <text >
    Welcome @Session["UserName"].ToString() </text>
    }

    @using (Html.BeginForm("GetSurvey", "DashboardController"))
    {
    <input type="submit" value="Some text" />
    }
</fieldset>

Я хочу перенаправить на страницу GetSurvey.cshtml с контроллером DashboardController.cs

GetSurvey похоже,

@model List<SelectListItem>

@{
    ViewBag.Title = "GetSurvey";
}

<h2>Survey List</h2>
<fieldset>
    <legend> User DashBoard </legend>

    @using (Html.BeginForm("GetSurvey", "DashboardController", FormMethod.Post))
    {
        @Html.DropDownList("ddlCustomers", Model)
        <br />
        <br />
        <input type="submit" value="Submit" />
    }
</fieldset>

и DashboardController,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Survey.Controllers
{
    public class DashboardController : Controller
    {
        //
        // GET: /Dashboard/

        public ActionResult GetSurvey()
        {
            List<SelectListItem> customerList = Survey();
            return View(customerList);
          //  return View();
        }

        public ActionResult GetSurvey(string ddlCustomers)
        {
            List<SelectListItem> customerList = Survey();
            if (!string.IsNullOrEmpty(ddlCustomers))
            {
                SelectListItem selectedItem = customerList.Find(p => p.Value == ddlCustomers);
                ViewBag.Message = "Name: " + selectedItem.Text;
                ViewBag.Message += "\\nID: " + selectedItem.Value;
            }
            return View(customerList);
        }
        private static List<SelectListItem> Survey()
        {
            SurveyAppEntities ObjectSur=new SurveyAppEntities();
            List<SelectListItem> customerList = (from p in ObjectSur.Surveys.AsEnumerable()  
                                                 select new SelectListItem
                                                 {
                                                     Text = p.Title,
                                                     Value = p.ID.ToString()
                                                 }).ToList();

            return customerList;
        }
    }
}

Я не знаю, почемуболее не перенаправляя на страницу, упомянутую выше, у меня возникла та же проблема при запуске проекта, когда я переименовывал имя HomeController.

МАРШРУТЫ:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

1 Ответ

0 голосов
/ 23 ноября 2018

Вот простой способ проверить, что происходит в вашем приложении.

В Интернете существует несколько инструментов для регистрации трафика HTTP / HTTPS, одним из которых также является fiddler , когдаПерейдя по ссылке на вашем сервере, вы можете увидеть, какие данные отправляются и какой URL запрашивается у вашего проекта.Чтобы он захватывал локальные данные, вам нужно войти в настройки вашего проекта и указать конкретный URL-адрес, добавленный .fiddler после localhost.например, http://localhost.fiddler:4444/MyTestApp

Вышеприведенное предоставит вам больше данных при отладке вашего приложения.

сейчас, просто удалите часть Controller из DashboardController по вашему мнению, теперь это должно указывать на правильный URL-адрес, также, пожалуйста, обратите внимание, что вам не нужно украшать свой метод GetSurvey с помощью [POST], поскольку GET подразумевается по умолчанию, вы можете переопределить это поведение, используя перегрузку @Html.Метод BeginForm.

@using (Html.BeginForm("someAction", "someController", FormMethod.Get))
{
    ...
}
...