Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# '中的服务器错误/';在.NET中进行验证_C#_Asp.net Mvc_Asp.net Mvc 4_Razor_Asp.net Mvc 5 - Fatal编程技术网

C# '中的服务器错误/';在.NET中进行验证

C# '中的服务器错误/';在.NET中进行验证,c#,asp.net-mvc,asp.net-mvc-4,razor,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,Asp.net Mvc 5,“/”应用程序中始终存在服务器错误。当我尝试在web应用程序中使用验证检查时 这就是模型: using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace MVCDemon.Models { public class Movie { [DisplayName("MovieName")] [Required(AllowEmptyStrings =false, E

“/”应用程序中始终存在服务器错误。当我尝试在web应用程序中使用验证检查时

这就是模型:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace MVCDemon.Models
{
    public class Movie
    {
    [DisplayName("MovieName")]
    [Required(AllowEmptyStrings =false, ErrorMessage ="CanNotBeEmpty")]
    public string Name { get; set; }
    }
}
这是控制器:

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

namespace MVCDemon.Controllers
{
    public class MovieController : Controller
    {
        [HttpPost]
        public ActionResult Validation(Movie movie)
        {
            if (ModelState.IsValid)
            {
                ViewBag.Name = movie.Name;
            }
            return View();
        }
    }
}
这是Html:

<div>
@model MVCDemon.Models.Movie
@using (Html.BeginForm())
{
    <div>
        @Html.TextBoxFor(m => m.Name)
        @Html.ValidationMessageFor(m => m.Name)
    </div>
    <input type="submit" value="submit" />
}
</div>
<div>
    @ViewBag.Name
</div>

@型号MVCDemon.Models.Movie
@使用(Html.BeginForm())
{
@Html.TextBoxFor(m=>m.Name)
@Html.ValidationMessageFor(m=>m.Name)
}
@查看包。名称
这是布局图:

我检查了脚本并导入了jquery.validation.min.js和jquery.validation.unobtrusive.min.js

此外,我还尝试设置某人提到的配置:

但错误仍然存在

“/”应用程序中出现服务器错误。找不到资源。 描述:HTTP404。您正在寻找的资源(或其 依赖项)可能已被删除、名称已更改或 暂时不可用。请查看下面的URL并进行修改 确保它拼写正确


您的表单似乎没有路由到控制器

您可以通过将以下参数添加到
Html.BeginForm
中来完成此操作:

@using (Html.BeginForm("Validation", "Movie", FormMethod.Post))
{
    // ...rest of form code
}

重要参数是
actionName
controllerName

404的可能副本与验证无关。请看副本。您可能没有向正确的控制器摆姿势。请注意,如果
Html.BeginForm()
按OP的方式保留为空,则它将查找与编写Html帮助程序的视图同名的post操作。很难说这是否是他的问题,因为他没有指定视图的名称,但我猜这个答案会解决这个OP的问题。我只是想指出这一点out@GregH非常正确,没有get方法,尽管我无法从中推断。如果它是一样的,大会会把它捡起来,而不是404。@GregH非常感谢你回答这个问题!正如您所提到的,我试图通过BeginForm(actionName,controllerName)中的参数来修复它。不幸的是,问题仍然存在。但是,你的评论激发了我对后期行动的兴趣。我只是从方法中删除了controller[HttpPost]的注释,那么一切都很好。我仍然对此感到困惑。。。为什么我不能用那个注释来声明?@YANQINGJING你有没有在
Html.BeginForm(…)
中加入
FormMethod.Post
@hutchonoid的答案肯定有效,所以我猜你在最初尝试实现他的过程中遗漏了一些东西suggestion@YANQINGJING是的,您需要包括
FormMethod.Post
。如果您想发布表单,删除表单就是将其更改为httpget。