![](/img/trans.png)
[英]HTTP 404 Server Error in '/' Application. in ASP.NET MVC 4
[英]Server error in application '/'. HTTP 404. MVC ASP.NET
我試圖通過POST
操作方法顯示視圖,但是當調用此操作時,它會顯示消息"Server error in application '/'"
。
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) may have been removed, renamed, or temporarily unavailable. Please review the URL below and make sure it is spelled correctly.
我已經使用routes.MapMvcAttributeRoutes()
為這個方法創建了我各自的視圖。
[Route("Home/AddPiloto")]
[Route("AddPiloto")]
public ActionResult AddPiloto()
{
return View();
}
這是我從 html 表單調用的POST
操作,該方法有效並獲取數據, only the view fails.
[HttpPost]
public ActionResult AddPiloto(PilotoClass pclass)
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("http://localhost:8080/AeronauticaDGAC/");
var request = httpClient.PostAsync("webresources/conndatabase.piloto/supCreatePost", pclass,
new JsonMediaTypeFormatter()).Result;
if (request.IsSuccessStatusCode)
{
var resultString = request.Content.ReadAsStringAsync().Result;
var succes = JsonConvert.DeserializeObject<bool>(resultString);
ViewBag.Mg = succes;
return RedirectToAction("AddPiloto");
}
ViewBag.Mg = request.StatusCode;
return RedirectToAction("Index",ViewBag);
}
最后在這里,我有一個調用此方法POST
的典型表單。
<form action="AddPiloto" method="post">
<div class="form-group">
<input class="form-control" type="number" name="id" value="" placeholder="Id" />
<input id="inp1" class="form-control" type="text" name="nombre" value="" placeholder="Nombre" />
<input id="inp1" class="form-control" type="text" name="apellido" value="" placeholder="Apellido" />
<input id="inp1" class="form-control" type="number" name="edad" value="" placeholder="Edad" />
<hr />
<input class="btn btn-primary" type="submit" name="button" value="Enviar" />
<input onclick="limpiarFormulario1()" class="btn btn-danger" type="button" name="button" value="Limpiar" />
</div>
</form>
我已經創建了視圖, compile
並recompile
解決方案, clear the browser cache
, check if the file exists
並restart the IIS server
,但對我沒有任何作用,如果有人知道任何可能的解決方案,我將不勝感激。 提前致謝。
All code.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net.Http;
using Newtonsoft.Json;
using AeronauticaClient.Models;
using System.Net.Http.Formatting;
namespace AeronauticaClient.Controllers
{
[RoutePrefix("Home")]
[Route("{action}")]
public class HomeController : Controller
{
[Route("~/")]
[Route("")]
[Route("Index")]
[HttpGet]
public ActionResult Index()
{
System.Net.Http.HttpClient CHttp = new HttpClient();
CHttp.BaseAddress = new Uri("http://localhost:8080/AeronauticaDGAC/");
var request = CHttp.GetAsync("webresources/conndatabase.piloto/supFindAllGet").Result;
if (request.IsSuccessStatusCode)
{
var resultString = request.Content.ReadAsStringAsync().Result;
var listado = JsonConvert.DeserializeObject<List<PilotoClass>>(resultString);
ViewBag.Message = request;
return View(listado);
}
else
{
ViewBag.Message = request;
}
return View();
}
[Route("Home/AddPiloto")]
[Route("AddPiloto")]
public ActionResult AddPiloto()
{
return View();
}
[HttpPost]
public ActionResult AddPiloto(PilotoClass pclass)
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("http://localhost:8080/AeronauticaDGAC/");
var request = httpClient.PostAsync("webresources/conndatabase.piloto/supCreatePost", pclass,
new JsonMediaTypeFormatter()).Result;
if (request.IsSuccessStatusCode)
{
var resultString = request.Content.ReadAsStringAsync().Result;
var succes = JsonConvert.DeserializeObject<bool>(resultString);
ViewBag.Mg = succes;
return RedirectToAction("AddPiloto");
}
ViewBag.Mg = request.StatusCode;
return RedirectToAction("Index",ViewBag);
}
}
}
Routing code.
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
當您重定向到索引時,您將ViewBag
作為參數傳遞。
return RedirectToAction("Index",ViewBag);
但服務器找不到接收該參數的索引方法,因此引發異常。
重定向時刪除ViewBag
作為參數。
return RedirectToAction("Index");
在重定向之前,將ViewBag
替換為TempData
if (request.IsSuccessStatusCode) { var resultString = request.Content.ReadAsStringAsync().Result; var succes = JsonConvert.DeserializeObject<bool>(resultString); TempData["Mg"] = succes; return RedirectToAction("AddPiloto"); } TempData["Mg"] = request.StatusCode; return RedirectToAction("Index");
要檢索您在上一步中存儲的值,請進一步使用TempData["Mg"]
。
您需要TempData
代替,因為在RedirectToAction
之后您將處於新請求中。 由於ViewBag
僅適用於相同的請求,重定向后值會丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.