1

嗨,我在整个应用程序中都有以下鳕鱼,但只有两个字段无法正常工作。

[Required]        
public string DevelopmentPM { get; set; }

以下测试运行并通过:

    [TestMethod]
    public void SiteConstruction_MODEL_DevelopmentPM_Is_Required()
    {
        //arrange
        var propertyInfo = typeof(SiteConstructionMetadata).GetProperty    
                           ("DevelopmentPM");

        //act
        var attribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), 
                        true).Cast<RequiredAttribute>().FirstOrDefault();

        //assert
        Assert.IsNotNull(attribute);
    }

我的控制器看起来像:

        TryUpdateModel(siteConstruction);

        if (!ModelState.IsValid)
           return View(siteConstruction);

我在模型中有其他必填字段,它们都可以。该字段为空(我检查过)但不会使模型无效 - 因此没有验证并且保存时出错。

我的观点

    <li>
        <label for="DevelopmentPM">
            <strong>Development PM:</strong></label>
        <%= Html.TextBox("DevelopmentPM") %>
        <%= Html.ValidationMessage("DevelopmentPM", "*") %>
    </li>

我查看了我的 .dbml(Linq to SQl),拼写看起来不错。

我错过了一些简单的东西 - 请发疯。

谢谢

戴维

4

2 回答 2

1

[MetadataType(typeof(SiteConstructionMetadata))] 在我的部分类之上,我认为它是理所当然的。

下一次,与其发布片段,我想我会全部发布 - smeone wous 很快就发现了这一点。

戴维

于 2009-09-13T00:54:39.790 回答
0

确保你也制作DataAnnotationsModelBinder了默认的模型绑定器。在您的中添加以下内容Global.asax.cs

ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();

并确保您System.ComponentModel.DataAnnotations.dll在项目中引用了该程序集。有关更多详细信息,请参阅本教程

于 2009-09-12T22:38:37.977 回答