相关疑难解决方法(0)

"需要Id字段"创建的验证消息; 我未设置为[必需]

当我尝试使用Asp.Net MVC 2中的创建样式操作创建实体时,会发生这种情况.

POCO具有以下特性:

public int Id {get;set;}

[Required]
public string Message {get; set}
Run Code Online (Sandbox Code Playgroud)

在创建实体时,会自动设置Id,因此在Create操作中不需要它.

ModelState表示"需要Id字段",但我没有将其设置为如此.这里有自动发生的事吗?

编辑 - 原因显示

Brad Wilson通过Paul Speranza在下面的一条评论中回答了这个问题的原因,他说(欢呼保罗):

你提供了身份证的价值,你只是不知道你是谁.它位于默认路由的路由数据中("{controller}/{action}/{id}"),其默认值为空字符串,对int无效.使用action参数的[Bind]属性排除ID.我的默认路由是:new {controller ="Customer",action ="Edit",id =""} //参数默认值

编辑 - 更新模型技术

我实际上通过使用TryUpdateModel和与之相关的exclude参数数组改变了我再次这样做的方式.

    [HttpPost]
    public ActionResult Add(Venue collection)
    {
        Venue venue = new Venue();
        if (TryUpdateModel(venue, null, null, new[] { "Id" }))
        {
            _service.Add(venue);
            return RedirectToAction("Index", "Manage");
        }
        return View(collection);
    }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc data-annotations asp.net-mvc-2

69
推荐指数
5
解决办法
5万
查看次数

ASP.NET MVC可选字段被视为必需

我有这个字段,由于某种原因,当我点击提交时,获得一个验证消息,该字段是必需的.

[DisplayName("Total Budget:")]
public double Budget { get; set; }

@Html.EditorFor(model => model.account.Budget)
@Html.ValidationMessageFor(model => model.account.Budget)

public class Account
{
    [DisplayName("Total Budget:")]
    public double Budget { get; set; } //dropdown
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-3

39
推荐指数
3
解决办法
3万
查看次数

从类中删除必需属性但MVC3仍然不会在文本框中没有值的情况下发布表单

我上课了.有一次,我使用System.ComponentModel将类的属性设置为[Required] ....

好的,然后我意识到这不是必需的.我已经删除了所需的属性,但是当我尝试将表单提交给ActionResult时,表单不会发布,并且仍在尝试强制要填充TextBoxFor(theModelProperty).

我删除了"obj"文件夹,"bin"文件夹,还"清除"了解决方案.仍然没有决议.

我不想做一个愚蠢的解决方法,我想做正确的事情.知道为什么会这样吗?

asp.net-mvc componentmodel required data-annotations asp.net-mvc-3

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

为什么Html.HiddenFor生成data-val-属性

标准输出@Html.HiddenFor(model => model.Id)

<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="0" />
Run Code Online (Sandbox Code Playgroud)

是否需要生成data-val-*属性?它们看起来相当冗长,并且不需要能够存储和返回下一个POST的数据.

禁用这些属性是个好主意吗?它们对某些场景有用吗?

ps:目前我有办法通过临时设置禁用它们 ViewContext.UnobtrusiveJavaScriptEnabled = false

使用这两个类:

public static class Extensions
{
    public static NoUnobtrusiveJavaScript NoUnobtrusiveJavaScript(this HtmlHelper htmlHelper)
    {
        return new NoUnobtrusiveJavaScript(htmlHelper.ViewContext);
    }
}

public class NoUnobtrusiveJavaScript: IDisposable
{

    private bool _disposed;
    private readonly bool _unobtrusiveJavaScript;
    private readonly ViewContext _viewContext;

    public NoUnobtrusiveJavaScript(ViewContext viewContext)
    {
        if (viewContext == null) {
            throw new ArgumentNullException("viewContext");
        }

        _viewContext …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc-3 html.hiddenfor

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

为什么我的int?价值被验证,好像它是必需的?

我有一个int?查看在客户端验证的模型属性,就像它是必需的一样.也就是说,如果我将该字段留空,则不会提交.字符串属性不会发生同样的情况.

为我的编辑器呈现的HTML是:

<input type="text" value="" name="StatusIdSearch" id="StatusIdSearch" data-val-number="The field Status must be a number." data-val="true" class="text-box single-line">
Run Code Online (Sandbox Code Playgroud)

我认为这data-val-number会导致错误,因为没有什么不是数字,但我无法确定原因.

有任何想法吗?

编辑

视图模型:

public class CompromissoSearchModel
{
        // other properties removed for the sake of clarity

        [Display(Name = "Status")]
        [EnumDataType(typeof(StatusCompromisso))]
        public int? StatusIdSearch { get; set; }

       // other properties removed for the sake of clarity
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net jquery-validate asp.net-mvc-3

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

MVC3删除了"required"但仍然获得了data-val-required属性

我的模特

    [DataType(DataType.Text)]
    [Display(Name = "Number of Employee")]
    public int NumberOfEmployee { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "CEO Birthday")]
    [DateRange(2)]
    public DateTime CEO_Birthday { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "Organisation Anniversary")]
    [DateRange(3)]
    public DateTime OrgAnniversary { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的观点

          <tr>
            <td style="border:0;">
                <div class="editor-label">
                    @Html.LabelFor(m => m.NumberOfEmployee)                            
                </div> 
            </td>
            <td style="border:0;">
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.NumberOfEmployee)
                </div>
            </td>
        </tr>

        <tr>
            <td style="border:0;vertical-align:middle;">
                <div class="editor-label">
                    @Html.LabelFor(m => m.CEO_Birthday)                            
                </div> 
            </td>
            <td style="border:0;">
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.CEO_Birthday, …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-3

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

Asp.net mvc:自动生成验证!

这是类代码检查,没有DataAnnotation.

 public int Rotate { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是它的用途

@Html.HiddenFor(model => model.Screen.Rotate)
Run Code Online (Sandbox Code Playgroud)

这里生成html,y生成验证规则????

<input type="hidden" value="" name="Screen.Rotate" id="Screen_Rotate" data-val-required="The Rotate field is required." data-val-number="The field Rotate must be a number." data-val="true">
Run Code Online (Sandbox Code Playgroud)

注意:如果我将int Rotate更改为string Rotate,那么它不会为data-val-required,data-val-number等验证生成额外的属性.

asp.net asp.net-mvc-3

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

为什么MVC模型Binder集需要int,long值?

我有一个像这样的模特

public int Id {get;set;}

[Required]
public string FirstName{get; set}
[Required]
public string LastName{get; set}
Run Code Online (Sandbox Code Playgroud)

Id在DB中自动生成.当我想要调用Create Action时ModelState说"需要Id字段"!!!! 我找到了这个问题,但它不是干净的解决方案.还有其他方法可以解决这个问题吗?

有没有办法改变值类型的Mvc ModelBinder行为?

asp.net-mvc data-annotations asp.net-mvc-4

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