相关疑难解决方法(0)

将System.ComponentModel.DataAnnotations与Entity Framework 4.0一起使用

我正在使用MVC3,并使用Entity Framework 4.0实体作为我的模型.到目前为止,就使用它作为模型而言,一切都很有效(所有的crud操作/页面生成开箱即用).我想知道,你如何获得与手动生成模型时相同的强大标签和验证信息?

这是我的意思的一个例子.这是一个由MVC3示例项目生成的类:

public class LogOnModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

通过上面的示例,您可以指定在字段的标签中显示的内容(显示)以及要使用的字段类型(密码).但是,当我尝试使用实体框架并将其推送到下面的视图时,我看到自动生成的标签只是字段名称,而不是我希望用户看到/必须阅读的内容:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Person</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.MiddleName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MiddleName)
            @Html.ValidationMessageFor(model => model.MiddleName) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework-4 c#-4.0 asp.net-mvc-3

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

具有复杂类型嵌套对象的bind属性include和exclude属性

好的,这很奇怪.我不能用BindAttributeIncludeExclude性质与ASP.NET MVC复杂类型嵌套对象.

这是我做的:

这是我的模特:

public class FooViewModel {

    public Enquiry Enquiry { get; set; }
}

public class Enquiry {

    public int EnquiryId { get; set; }
    public string Latitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

HTTP Post动作:

[ActionName("Foo"), HttpPost]
public ActionResult Foo_post(
    [Bind(Include = "Enquiry.EnquiryId")]
    FooViewModel foo) {

    return View(foo);
}
Run Code Online (Sandbox Code Playgroud)

视图:

@using (Html.BeginForm()) {

    @Html.TextBoxFor(m => m.Enquiry.EnquiryId)
    @Html.TextBoxFor(m => m.Enquiry.Latitude)

    <input type="submit" value="push" />
}
Run Code Online (Sandbox Code Playgroud)

根本不起作用.如果我按照此处的说明定义BindAttributefor Enquiry类,我可以只做这项工作:

如何在复杂的嵌套对象上使用[Bind(Include ="")]属性?

asp.net-mvc defaultmodelbinder model-binding asp.net-mvc-3

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

我应该使用可选的构造函数将域对象映射到视图模型吗?

我希望能够通过新建视图模型并将贡献域模型作为参数传递(如下面的代码),将域模型映射到视图模型.我的动机是不再重复使用映射代码和提供一种简单的映射方式(不使用自动化器).一位朋友说,视图模型不应该知道有关传递给可选构造函数的"支付"域模型的任何信息.你怎么看?

public class LineItemsViewModel
{
    public LineItemsViewModel()
    {
    }

    public LineItemsViewModel(IPayment payment)
    {
        LineItemColumnHeaders = payment.MerchantContext.Profile.UiPreferences.LineItemColumnHeaders;
        LineItems = LineItemDomainToViewModelMapper.MapToViewModel(payment.LineItems);
        ConvenienceFeeAmount = payment.ConvenienceFee.Fee;
        SubTotal = payment.PaymentAmount;
        Total = payment.PaymentAmount + payment.ConvenienceFee.Fee;
    }

    public IEnumerable<Dictionary<int, string>> LineItems { get; set; }
    public Dictionary<int, string> LineItemColumnHeaders { get; set; }
    public decimal SubTotal { get; set; }
    public decimal ConvenienceFeeAmount { get; set; }
    public decimal Total { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc viewmodel

6
推荐指数
2
解决办法
2252
查看次数

如何在部分类的另一半中定义的属性上使用属性?

我有一个自动生成的类来导入包含这样的(缩写)的web服务:

[System.Runtime.Serialization.DataMemberAttribute()]
public System.DateTime StartDate 
{
    get 
    {
        return this.StartDateField;
    }
    set { /* implementation prop changed */ }
}
Run Code Online (Sandbox Code Playgroud)

我想为此成员添加MVC格式属性.所以在另一个包含相同partial class定义的文件中,我想做类似以下的事情(这是非法的):

[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)] 
public DateTime StartDate;
Run Code Online (Sandbox Code Playgroud)

部分方法在这里没有用,因为部分方法必须是私有的,具有void返回类型,必须是方法等等.

我该如何装饰这个会员?

c# asp.net-mvc attributes partial-classes

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

向 EF6 生成的实体类添加属性

我在数据库优先上下文中使用 EF6。在本例中,我在 MVC Web 项目中使用实体类,并希望使用各种验证和显示属性来注释实体的字段。但是,当我通过在 edmx 设计器中从数据库进行更新来刷新实体类时,类会重新生成,并且我的属性会丢失。

解决这个问题的最佳方法是什么?

c# asp.net-mvc entity-framework edmx edmx-designer

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

用于在域模型之间映射数据的模式

这是我最近需要做的常见事情,我正在寻找任何常见的模式,以使这更容易.

它的主要内容是我有一些数据模型,它们被建模以满足ORM并且纯粹对对象进行CRUD操作.这些模型目前通过存储库/工厂公开(取决于其C或RUD).

然后,我有一个视图模型,它更具可读性,并且充满了UI关注点,例如视图之间的验证和映射数据(这是一个ASP.MVC场景,但这种情况可以在大多数情况下被抽象化).

所以我想说我去了localhost/user/1,它应该让我在数据库中找到Id 1的用户,然后在UI上显示它.最终,这必须从数据域中提取数据,然后将其映射到ui模型以用于显示目的.

以下是一个示例场景:

public class OrmUser
{
    public int Id {get;set;}
    public string Name {get;set;}
    public IList<Permission> Permissions {get;set;}
}

public class UiUser
{
    [Required]
    public int Id {get;set;}
    [Required]
    public string Name {get;set;}
    public bool IsUserAdmin {get;set;}
}

public class UserMapper : IMapper<UiUser>
{
    public UiUser Get(int id)
    {
        var ormUser = UserRepository.Get(id);
        var uiUser = new UiUser
        {
            Id = ormUser.Id,
            Name = ormUser.Name,
            IsUserAdmin = IsUserAdmin(ormUser.Permissions)
        }
    }

    private bool IsUserAdmin(IList<Permission> permissions)
    {
        return …
Run Code Online (Sandbox Code Playgroud)

design-patterns models viewmodel

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