C# '中的服务器错误/';在.NET中进行验证
“/”应用程序中始终存在服务器错误。当我尝试在web应用程序中使用验证检查时 这就是模型: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
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。