标签: modelstate

如果字段值已失效,如何将字段值保留在ASP.NET MVC表单中?

我有一个表单在发送电子邮件之前经过一些验证.

我已经尝试使用它进行验证,其中方法ValidateInput根据输入设置ModelState:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    ValidateInput(collection);
    if (ModelState.IsValid == false) return View(collection);
Run Code Online (Sandbox Code Playgroud)

如果某些内容无效,则会清除所有输入的字段.我想在字段中保留所有输入的数据.我怎样才能做到这一点?

c# validation asp.net-mvc modelstate asp.net-mvc-2

1
推荐指数
1
解决办法
2803
查看次数

添加模型状态错误并在重定向到操作后进行验证

ModelState在MVC3中有一个关于和验证错误消息的问题.我在我的注册表视图@Html.ValidationSummary(false)中显示了我的DataAnnotationsModel对象的错误消息.然后..在我的Register动作控制器中我有ModelState.IsValid,但在里面if(ModelState.IsValid)我有另一个错误控件添加到模型状态ModelState.AddModelError(string.Empty, "error...")然后我做了RedirectToAction,但添加的消息ModelState根本没有显示.

为什么会这样?

asp.net-mvc modelstate addmodelerror asp.net-mvc-3

1
推荐指数
1
解决办法
4984
查看次数

如何从asp.net mvc3中的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)

c# asp.net-mvc modelstate asp.net-mvc-3

1
推荐指数
1
解决办法
1864
查看次数

对于double值,ASP.NET MVC4 ModelState.IsValid为false

我正在构建一个基于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)

asp.net-mvc modelstate asp.net-mvc-4

1
推荐指数
1
解决办法
2923
查看次数

重新获取模型状态错误消息

我有以下行动方法: -

 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

1
推荐指数
1
解决办法
811
查看次数

使用正确的键名称添加 ModelState 错误

我有一个简单的模型,例如:

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)

c# validation asp.net-mvc modelstate asp.net-web-api

1
推荐指数
1
解决办法
3114
查看次数

如何使用 DataAnnotation 属性在控制台应用程序中验证模型

我正在尝试在 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)

c# validation asp.net-mvc modelstate data-annotations

1
推荐指数
1
解决办法
1940
查看次数

ModelState.IsValid 为 false 但应该为 true

我有一个带有 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)

c# asp.net ajax asp.net-mvc modelstate

1
推荐指数
1
解决办法
2921
查看次数

MVC3查看更新问题

这是一个设置图像以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)

image modelstate asp.net-mvc-3

0
推荐指数
1
解决办法
160
查看次数

system.web.mvc如何确定ModelState的值是否包含错误?

那么,我可以打电话ModelState.IsValid给控制器?

检查什么?什么是检查?它在哪里发生?

我查看了MSDN文档,但没有透露太多内容.

asp.net-mvc modelstate asp.net-mvc-4

0
推荐指数
1
解决办法
509
查看次数

ModelState 无效,对象正常吗?

我目前正在开发一个基本的 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)

c# asp.net-mvc modelstate

0
推荐指数
1
解决办法
411
查看次数