我有一个表单在发送电子邮件之前经过一些验证.
我已经尝试使用它进行验证,其中方法ValidateInput根据输入设置ModelState:
[HttpPost]
public ActionResult Create(FormCollection collection)
{
ValidateInput(collection);
if (ModelState.IsValid == false) return View(collection);
Run Code Online (Sandbox Code Playgroud)
如果某些内容无效,则会清除所有输入的字段.我想在字段中保留所有输入的数据.我怎样才能做到这一点?
我ModelState
在MVC3中有一个关于和验证错误消息的问题.我在我的注册表视图@Html.ValidationSummary(false)
中显示了我的DataAnnotations
Model对象的错误消息.然后..在我的Register动作控制器中我有ModelState.IsValid
,但在里面if(ModelState.IsValid)
我有另一个错误控件添加到模型状态ModelState.AddModelError(string.Empty, "error...")
然后我做了RedirectToAction
,但添加的消息ModelState
根本没有显示.
为什么会这样?
我有一个关于asp.net mvc3中的modelstate的问题,我有一个控制器假设Home
和一个动作submitform
.现在我第一次将表单提交给此操作,并且用户输入了错误,我使用modelstate进行了错误的回归
ModelState.AddModelError("", "Your entered date is wrong .");
Run Code Online (Sandbox Code Playgroud)
现在,当用户再次提交表单时,假设日期正确,但这次他输入了错误的名称,现在当我在此步骤返回错误时
ModelState.AddModelError("", "name should be at least 4 character long .");
Run Code Online (Sandbox Code Playgroud)
但是现在当我回来的时候,我看到name should be at least 4 character long .
并且也看到了 Your entered date is wrong.
,这是什么问题?
以下是我的完整代码
[Authorize]
[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class HomeController : Controller
{
public ActionResult Formsubmit(mymodel RModel)
{
if(RModel.date != "2/2/2012")
{
ModelState.AddModelError("", "Your entered date is wrong .");
}
if(RModel.name.cout() < 4)
{
ModelState.AddModelError("", …
Run Code Online (Sandbox Code Playgroud) 我正在构建一个基于ASP.NET MVC 4 C#的网站.当weight是double时,我在使用@ Html.EditorFor(model => model.Weight)时遇到了问题.如果我只输入数字到文本域ModelState.IsValid返回true.如果我输入用逗号分隔的数字,则客户端验证表明这不是有效数字.如果我输入用点分隔的数字,则客户端验证是可以的,但在服务器端,ModelState.IsValid返回false.
这是我想编辑的模型(由实体框架生成,基于数据库表):
using System;
using System.Collections.Generic;
public partial class Record
{
public int Id { get; set; }
public int ExerciseId { get; set; }
public double Weight { get; set; }
public System.Guid UserId { get; set; }
public System.DateTime CreatedDate { get; set; }
public virtual Exercise Exercise { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的看法
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="editor-field">
@Html.DropDownList("ExerciseId")
@Html.ValidationMessageFor(model => model.ExerciseId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Weight)
</div> …
Run Code Online (Sandbox Code Playgroud) 我有以下行动方法: -
public ActionResult AddServerToRack(AddServerToRack s)
{
if (ModelState.IsValid)
{
try
{
// code goes here
}
}
var errorDesc = ModelState.Select(a=>a.Value.Errors.Select(a2=>a2.ErrorMessage)).ToList();
string desc = "";
foreach (var i in errorDesc)
{
desc = desc + " " + i.ToString();
}
return Json(new { IsSuccess = false, description = desc}, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是获取模型状态内的所有错误消息,并将它们作为json对象发送.但目前我无法在我的操作方法结束时使用foreach获取错误消息的描述.所以任何人都可以建议,我怎么能得到所有的模型状态错误信息描述.谢谢
entity-framework modelstate entity-framework-5 asp.net-mvc-5
我有一个简单的模型,例如:
public class Employer
{
[Required(ErrorMessage = "Please specify id")]
public int Id { get; set; }
[MaxLength(256, ErrorMessage = "Max lenght should be less than 256")]
[Required(ErrorMessage = "Please specify Name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please specify id of organization")]
public int OrganizationId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
那么控制器是:
public IHttpActionResult Post(Employer employer)
{
if(!IsActiveOrganization(employer.OrganizationId))
{
ModelState.AddModelError(nameof(employer.OrganizationId), "The organization is not active!");
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在尝试在创建新雇主之前验证模型。因此,当我传递无效模型时id
,响应将如下:
{ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 ASP.net MVC 应用程序之外使用 DataAnnotation 属性验证。理想情况下,我想在我的控制台应用程序中采用任何模型类并将其装饰如下:
private class MyExample
{
[Required]
public string RequiredFieldTest { get; set; }
[StringLength(100)]
public int StringLengthFieldTest { get; set; }
[Range(1, 100)]
public int RangeFieldTest { get; set; }
[DataType(DataType.Text)]
public object DataTypeFieldTest { get; set; }
[MaxLength(10)]
public string MaxLengthFieldTest { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后(伪)做这样的事情:
var item = new MyExample(); // not setting any properties, should fail validation
var isValid = item.Validate();
Run Code Online (Sandbox Code Playgroud)
我在网上的一个示例中找到了这段代码:
var item = new MyExample(); // not setting any …
Run Code Online (Sandbox Code Playgroud) 我有一个带有 AJAX 更新的 ASP.NET MVC 应用程序。除创建“收据”外,每个实体的 CRUD 操作均正常工作。当控制器点击ModelState.IsValid
转换为 false 而实际上它应该是 true 时,就会出现问题。我一步步调试了很多次,应该是真的却总是假的。
我正在使用实体框架进行实体操作,这是从 SQL Server 数据库生成的代码:
public partial class Receipt
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Receipt()
{
this.Receipts1 = new HashSet<Receipt>();
this.Seminars = new HashSet<Seminar>();
}
public int Id { get; set; }
public System.DateTime IssueDate { get; set; }
public Nullable<System.DateTime> DeliveryDate { get; set; }
public Nullable<System.DateTime> PaymentDue { get; set; }
public Nullable<short> CompanyId { get; set; }
public Nullable<int> Number { get; set; }
public …
Run Code Online (Sandbox Code Playgroud) 这是一个设置图像以ViewBag
供显示的动作.
public ActionResult UploadPhoto()
{
List<string> images = new List<string>();
foreach (var file in Directory.GetFiles(AlbumManager.GetAlbumName(SessionManager.CurrentSession.PropertyId, true)))
{
images.Add(Server.RelativePath(file));
}
ViewBag.Images = images;
return PartialView("UploadPhoto");
}
Run Code Online (Sandbox Code Playgroud)
这是一个用于删除所选图像的帖子操作.
[HttpPost]
public ActionResult DeletePhoto(string imageName)
{
AlbumManager.DeletePhoto(SessionManager.CurrentSession.PropertyId, imageName);
return UploadPhoto();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,删除完成后,我将其重定向到UploadPhoto
必须打印当前现有图像的操作.但在回发后,删除的图像仍然显示.我对此行为非常不确定.请帮我解决这个问题.
我尝试DeletePhoto
使用以下代码清除模型状态,但没有用.
ModelState.Clear();
Run Code Online (Sandbox Code Playgroud)
我的看法:
@using (Html.BeginForm("DeletePhoto", "Add", FormMethod.Post, new { id = "PhotoDelete" }))
{
<input type="hidden" name="imageName" id="imageName" />
<div class="thumnailsBox">
@foreach (var image in ViewBag.Images)
{
<div class="thumnailTails">
<span class="thumbimage">
<input id="imageSubmit" type="image" alt="No Image" …
Run Code Online (Sandbox Code Playgroud) 那么,我可以打电话ModelState.IsValid
给控制器?
检查什么?什么是检查?它在哪里发生?
我查看了MSDN文档,但没有透露太多内容.
我目前正在开发一个基本的 ASP.NET MVC 应用程序。今天我遇到了一个奇怪的问题:
[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "Url, Homepage, Language, Country, Name")]FeedModel feedModel)
{
feedModel.Id = Guid.NewGuid().ToString();
feedModel.UserId = User.Identity.GetUserId();
Debug.WriteLine(feedModel.UserId);
if (ModelState.IsValid)
{
db.Feeds.Add(feedModel);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(feedModel);
}
Run Code Online (Sandbox Code Playgroud)
显然,根据 VS 中的调试工具,由于 UserId 值为空,ModelState.IsValid 始终为 false。但是,使用 Debug.WriteLine,feedModel.UserId 可以正确显示。
该函数用于从视图接收信息,添加 Id 和 UserId 的值。
这是 feedModel 类:
public class FeedModel
{
[Key]
public string Id { get; set; }
[Required]
public string UserId { get; set; }
[Required]
public string Url { …
Run Code Online (Sandbox Code Playgroud)