【问题标题】:Error 404 in mvc asp.net. View not displaymvc asp.net 中的错误 404。查看不显示
【发布时间】:2015-11-08 15:40:20
【问题描述】:

我无法创建视图及其自己的操作结果。我得到的错误是这个

Error de servidor en la aplicación '/'。

没有递归。

描述:HTTP 404. El recurso que está buscando (o una de sus dependencias) se puede haber quitado, haber cambiado de nombre o no estar disponible temporalmente。 Revise la dirección URL siguiente y asegúrese de que está escrita Correctamente。

定向 URL 请求:/Cursos/AgregarAlumno/2

这是我的观点(我知道它未完成,但我认为那不是问题)

@model LibreriaEntidad.Cursos
@{
    ViewBag.Title = "AgregarAlumnos";
}

<h2>AgregarAlumnos</h2>

@using (Html.BeginForm())
{
    <fieldset>
        <legend>Cursos</legend>

        @*<div class="editor-label">
            @Html.LabelFor(model => model.idCurso)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.idCurso)
            @Html.ValidationMessageFor(model => model.idCurso)
        </div>*@

        <div class="editor-label">
            @Html.LabelFor(model => model.Nombre)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Nombre)
            @Html.ValidationMessageFor(model => model.Nombre)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.idReparticion)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.idReparticion)
            @Html.ValidationMessageFor(model => model.idReparticion)
        </div>

        @*<div class="editor-label">
            @Html.LabelFor(model => model.Presencual)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Presencual)
            @Html.ValidationMessageFor(model => model.Presencual)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Virtual)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Virtual)
            @Html.ValidationMessageFor(model => model.Virtual)
        </div>*@

            <div class="editor-field">
                @Html.DropDownList("idUsuario", ViewBag.Usuarios as SelectList)
            </div>
            <p>
                <input type="submit" value="Save" />
            </p>
</fieldset>

这里还有我的控制器操作。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AgregarAlumnos(int id = 0)
{
    Cursos cursos = db.Cursos.Find(id);
    ViewBag.Usuarios = new SelectList(db.Usuario, "idUsuario", "Nombre");
    return View(cursos);
}

提前致谢

【问题讨论】:

  • 您正在尝试/Cursos/AgregarAlumno,但您的操作名称是AgregarAlumnos(带有“s”)。另外,您是使用 POST 还是 GET 访问它?
  • 我更改了名称并添加了“s”,但错误仍然存​​在。它是一个 post 方法。
  • 控制器是否在任何“区域”中?
  • 不存在于任何领域
  • 您的 POST 方法没有意义。您的视图有@model Cursos,这意味着您的POST 方法必须是public ActionResult AgregarAlumnos(Cursos model),因为这就是您的回帖(您没有使用name=id 发布输入)。并编辑您的问题以显示英文错误消息!

标签: c# asp.net asp.net-mvc attributes


【解决方案1】:

您应该从您的操作中删除 [HttpPost] 属性。

更新:

要显示视图,该操作必须接受 GET 请求。您应该使用两种不同的操作来显示视图和提交表单。

【讨论】:

  • 任何解释为什么?我只是从编辑操作中复制它,导致它的种类相同
  • 因为要显示视图,动作结果必须是GET。提交表单时使用 post。
【解决方案2】:

您需要一个对应的HttpGet 方法,因为您当前的方法只接受HttpPost 请求。添加以下内容:

[HttpPost]
public ActionResult AgregarAlumnos(int id = 0)
{
    Cursos cursos = db.Cursos.Find(id);
    ViewBag.Usuarios = new SelectList(db.Usuario, "idUsuario", "Nombre");
    return View(cursos);
}

HttpGet:- 每当第一次加载任何视图时,HttpGet 方法都会执行。这意味着在第一次请求 Asp.Net MVC HttpGet 方法中的任何 URL 时都会执行。这意味着如果任何 URL 通过 URL 接收输入,我们可以通过 HttpGet 方法处理输入。

HttpPost:- 一旦你点击 MVC 表单中的提交按钮,HttpPost 方法就会执行。这意味着我们可以使用HttpPost方法处理表单数据。

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多