1

我被我的项目卡住了。该项目有3层:

  1. 使用 ado.net 数据模型进行数据访问。
  2. 一个 WCF 服务,它从 de 数据访问 ado.net 数据模型中检索数据并发送一个序列化的类。
  3. 连接到 wcf 服务的 MVC Web 应用程序。

wcf 服务的类具有从另一层(数据访问层)检索数据并返回到 mvc 应用程序的过程(这没有问题)我创建了一个强类型视图(来自 wcf 服务参考),它显示产品类别,它很好买我不知道如何验证这个观点!

我看过很多关于验证的文章,其中大部分都使用模型和数据注释,但我的情况并非如此。我发现了一些关于 jquery 验证的文章,但我已经尝试过,但没有任何反应......这是视图的代码:

@model SkySolutionsMVC3.ProductCategoryServiceReference.CompositeProductCategory
@{
    ViewBag.Title = "Edit";
}
<h2>
    Edit</h2>
<script src="@Url.Content("~/Scripts/jquery-1.7.2.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>


@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Product Category</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Enabled)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Enabled)
            @Html.ValidationMessageFor(model => model.Enabled)
        </div>
        @Html.HiddenFor(model => model.Id)
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name, new { id="Name"})
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" name="btnSave" value="Save" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>

请帮忙!我需要一些想法...谢谢。

4

1 回答 1

0

我不完全确定你想要的是什么,但如果你说你基本上需要控制一个从其他地方导入的类,那么如何:编写你自己的类,从你用作模型的类继承现在并从 IValidatableObject 继承,然后将适当的注释添加到覆盖的属性或实现 Validate 方法,如下所示:


public class MyClass : SkySolutionsMVC3.ProductCategoryServiceReference.CompositeProductCategory, IValidatableObject
{
    [Required]
    public override string Name
    {
        get { return base.Name; }
        set { base.Name = value; }
    }

    public IEnumerable Validate(ValidationContext validationContext)
    {
        if (Name.Length != 5)
        {
            yield return new ValidationResult("Name must be exaclty 5 characters long", new string[]{"Name"});
        }
    }
}

于 2012-04-29T03:54:47.773 回答