ASP .NET MVC + LINQ生成的类+ DataAnnotations

时间:2011-01-14 20:25:58

标签: asp.net asp.net-mvc linq data-annotations

我有一个问题,我希望,你可以帮助我。好的,我会试着描述一下我的情况:

我已经创建了数据库。 添加了表“订单”。 然后在dbml文件中生成LINQ类。

现在,我已在控制器中创建操作,并且我正在尝试为一个或我的Order类属性(客户端名称)设置[DisplayName(“Other name”)]。所以,看看这个:

/ Core / Extansions.cs

namespace SUPNew.Core
{
    public static class Extansions
    {

    }

    [MetadataType(typeof(OrderMetaData))]
    public partial class Order
    {
    }

    public class OrderMetaData
    {
        [DisplayName("ФИО клиента")]
        public string ClientFIO { get; set; }
    }
}

/ Views / Manager / AddOrder.aspx

    <legend>Fields</legend>

    <div class="editor-label">
        <%: Html.LabelFor(model => model.ClientFIO) %>
    </div>
    <div class="editor-field">
        <%: Html.TextBoxFor(model => model.ClientFIO) %>
        <%: Html.ValidationMessageFor(model => model.ClientFIO) %>
    </div>

/ Controllers / ManagerController.cs

using SUPNew.Core;

/ Models / SUPNew.dbml

    public partial class Order : INotifyPropertyChanging, INotifyPropertyChanged
    {
...
        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientFIO", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
        public string ClientFIO
        {
            get
            {
                return this._ClientFIO;
            }
            set
            {
                if ((this._ClientFIO != value))
                {
                    this.OnClientFIOChanging(value);
                    this.SendPropertyChanging();
                    this._ClientFIO = value;
                    this.SendPropertyChanged("ClientFIO");
                    this.OnClientFIOChanged();
                }
            }
        }

所以,也许我忘了做点什么?我需要在LabelFor(model =&gt; model.ClientFIO)中显示我在部分类中选择的ClientFIO的DisplayName。

寻求帮助。


如果我更改.dbml文件 - 添加[DisplayName(“OtherName”)],如下所示:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientFIO", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
[DisplayName("Other name")]            
public string ClientFIO
            {
                get
                {
                    return this._ClientFIO;
                }
                set
                {
                    if ((this._ClientFIO != value))
                    {
                        this.OnClientFIOChanging(value);
                        this.SendPropertyChanging();
                        this._ClientFIO = value;
                        this.SendPropertyChanged("ClientFIO");
                        this.OnClientFIOChanged();
                    }
                }
        }

它有效,但当我尝试制作部分课程时 - 不是。有人可以帮我处理LINQ生成的类的部分类吗?

1 个答案:

答案 0 :(得分:0)

好的,在此之前,它不起作用:

/Core/Extansions.cs (命名空间SUPNew.Core)(公共部分类订单)
/Models/SUPNew.dbml (命名空间SUPNew.Models)(公共部分类顺序)(生成)

然后,当我像这样替换:

/Models/Extansions.cs (命名空间SUPNew.Models)(公共部分类订单) /Models/SUPNew.dbml (命名空间SUPNew.Models)(公共部分类顺序)(生成)

它开始起作用了。但是,问题出在哪里?我在所有地方都使用了所有的东西,并在View.aspx中导入。

我需要让它像第一个例子一样工作:

/Core/Extansions.cs (命名空间SUPNew.Core)(公共部分类订单)
/Models/SUPNew.dbml (命名空间SUPNew.Models)(公共部分类顺序)(生成)