MVC 重定向到另一个页面结果错误 404 未找到资源
MVC Redirection to another page result error 404 resource not found
我正在尝试重定向到另一个页面导致错误 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>
我想使用控制器 DashboardController.cs
重定向到页面 GetSurvey.cshtml
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 }
);
}
这是检查您的应用程序中发生了什么的简单方法。
Internet 上存在一些用于记录 HTTP/HTTPS 流量的工具,fiddler 也是其中之一,当浏览到您服务器上的 link 时,您可以看到数据是什么正在发送以及您的项目正在请求什么 URL。
要使其捕获本地数据,您需要进入您的项目设置,以及显示的特定 URL,只需在 localhost 后附加 .fiddler 即可。
例如 http://localhost.fiddler:4444/MyTestApp
以上将为您调试应用程序时提供更多数据。
现在,只需从您视图中的 DashboardController 中删除 Controller 部分,它现在应该指向正确的 URL,也请注意,您不需要使用 [POST] 装饰您的 GetSurvey 方法,因为默认情况下隐含 GET,您可以通过使用 @Html.BeginForm 方法的重载来覆盖此行为。
@using (Html.BeginForm("someAction", "someController", FormMethod.Get))
{
...
}
我正在尝试重定向到另一个页面导致错误 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>
我想使用控制器 DashboardController.cs
GetSurvey.cshtml
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 }
);
}
这是检查您的应用程序中发生了什么的简单方法。
Internet 上存在一些用于记录 HTTP/HTTPS 流量的工具,fiddler 也是其中之一,当浏览到您服务器上的 link 时,您可以看到数据是什么正在发送以及您的项目正在请求什么 URL。 要使其捕获本地数据,您需要进入您的项目设置,以及显示的特定 URL,只需在 localhost 后附加 .fiddler 即可。 例如 http://localhost.fiddler:4444/MyTestApp
以上将为您调试应用程序时提供更多数据。
现在,只需从您视图中的 DashboardController 中删除 Controller 部分,它现在应该指向正确的 URL,也请注意,您不需要使用 [POST] 装饰您的 GetSurvey 方法,因为默认情况下隐含 GET,您可以通过使用 @Html.BeginForm 方法的重载来覆盖此行为。
@using (Html.BeginForm("someAction", "someController", FormMethod.Get))
{
...
}