小编Adr*_*ore的帖子

在自定义ViewModel中重用验证属性

当我开始使用xVal进行客户端验证时,我只实现了使用域模型对象作为viewmodel或viewmodel中这些对象的嵌入实例的操作方法.

这种方法在大多数情况下都能正常工作,但有时候视图需要显示和回发模型属性的一个子集(例如,当用户想要更新他的密码,而不是他的其他配置文件数据时) .

一个(丑陋的)解决方法是在表单上为每个属性设置一个隐藏的输入字段,该字段在表单上不存在.

显然,此处的最佳做法是创建一个自定义视图模型,该视图模型仅包含与视图相关的属性,并通过Automapper填充视图模型.它更清晰,因为我只传输与视图相关的数据,但它远非完美,因为我必须重复已经存在于域模型对象上的相同验证属性.

理想情况下,我想通过MetaData属性将域模型对象指定为元类(这通常也称为"伙伴类"),但这不起作用,因为当元数据类具有属性时,xVal会抛出视图模型中不存在.

这有什么优雅的解决方法吗?我一直在考虑攻击xVal源代码,但也许还有其他方法我到目前为止忽略了.

谢谢,

阿德里安

编辑:随着ASP.NET MVC 2的到来,这不仅仅是与验证属性相关的问题,而且它也适用于编辑器和显示属性.

architecture validation asp.net-mvc xval automapper

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

使用Entity Framework Code First更新数据库模式

实体框架代码优先是开发新项目的一个很好的框架.但是扩展现有数据库呢?

例如,如果我只想在现有数据实体中添加其他属性,该怎么办?有没有"代码优先"的方法来实现这一点,还是我必须使用SQL Server Management Studio或类似工具手动添加数据库列?

到目前为止,我发现的是如何在架构更改时从头开始重新生成整个数据库,但我不想丢失我的数据.

如果我没弄错的话,Ruby on Rails有一个工具可以生成反映新数据库更改的SQL脚本.有没有办法在EF Code First中执行此操作?

entity-framework database-schema ef-code-first entity-framework-4.1

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

如何获取属于自定义属性的属性?

我需要在自定义属性中找到应用自定义属性的属性的类型.

例如:

[MyAttribute]
string MyProperty{get;set;}
Run Code Online (Sandbox Code Playgroud)

给定MyAttribute的实例,我怎样才能获得MyProperty的Type描述符?

换句话说,我正在寻找System.Type.GetCustomAttributes()的反面

c# reflection attributes

10
推荐指数
1
解决办法
8735
查看次数

在Monodroid应用程序中重用Monotouch代码

我目前正在实施Monotouch应用程序,最终将移植到Monodroid.该应用程序只是OData Web服务的客户端.没有什么太花哨或性能至关重要.

挑战是尽可能多地重用代码.我知道Monotouch和Monodroid的UI API完全不同,但我希望重用数据数据抽象和业务层.

由于我的UI层遵循MVP模式,我还希望通过编写每个视图的抽象表示来重用UI控制器.但是,我只能猜测这是否有效,因为我还没有被允许进入Monodroid测试版.

现在我的问题:

  • 您如何看待这种方法?这是一个好主意,还是会因为iPhone和Android之间的UI概念不同而导致平庸的应用程序?

  • 您能否提供有关如何构建应用程序以最大化代码重用的任何提示?

谢谢,

阿德里安

architecture mvp xamarin.ios xamarin.android

10
推荐指数
2
解决办法
4534
查看次数

如何在编译结束后发出蜂鸣声?

受试者说这一切......

我只是希望Xcode在编译过程结束后发出蜂鸣声或任何其他噪音.

我怎样才能做到这一点?

xcode

9
推荐指数
3
解决办法
1127
查看次数

如何为WinRT/ARM编译sqlite?

我已经成功编译了我的WinRT版本的SQLite for x86,正如Tim Heuer所描述的那样.

但是,我仍在努力如何在ARM CPU上编译WinRT的dll.我使用Visual Studio ARM命令提示符运行nmake,但这只是给我以下错误:

 C:\sqlite>nmake -f makefile.msc sqlite3.dll FOR_WINRT=1 OPTS=/DWINAPI_FAMILY=WIN
API_PARTITION_APP


Microsoft (R) Program Maintenance Utility Version 11.00.50522.1
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl.exe -W3 -DNDEBUG -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS
 -O2 -Zi /DEBUG -Femkkeywordhash.exe  -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_RTR
EE=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_MAX_TRIGGER_DEPTH=100 /DWINAPI_F
AMILY=WINAPI_PARTITION_APP .\tool\mkkeywordhash.c
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50522.1 for ARM

Copyright (C) Microsoft Corporation.  All rights reserved.

mkkeywordhash.c

Microsoft (R) Incremental Linker Version 11.00.50522.1
Copyright (C) Microsoft Corporation.  All rights reserved.

/machine:arm
/debug …
Run Code Online (Sandbox Code Playgroud)

sqlite arm makefile windows-8 windows-runtime

9
推荐指数
1
解决办法
3708
查看次数

如何在Windows 8中禁用纵向模式?

我开发了一个不支持纵向模式的XAML/C#Windows 8应用程序.我在Visual Studio中打开了Package.appxmanifest,并在"支持的旋转"下禁用了纵向和纵向翻转模式.这创建了以下旋转首选项:

        <InitialRotationPreference>
          <Rotation Preference="landscape" />
          <Rotation Preference="landscapeFlipped" />
        </InitialRotationPreference>
Run Code Online (Sandbox Code Playgroud)

但是,当我在模拟器中启动我的应用程序并旋转模拟器时,应用程序仍然会旋转到纵向模式.我怎么能防止这种情况发生?

谢谢,

阿德里安

c# orientation windows-8 windows-runtime

9
推荐指数
1
解决办法
9519
查看次数

通过CSS在ValidationSummary周围加一个框

默认情况下,Html.ValidationSummary()生成如下HTML:

<span class="validation-summary-errors">There were some errors...</span>
<ul class="validation-summary-errors">
   <li>First Name too long</li>
   <li>Invalid Email Address</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想选择整个验证摘要并通过CSS在它周围添加一个边界框,所以我要添加一个这样的CSS类:

.validation-summary-errors{
background-color:#D9FFB2;
border: 1px solid #5CBA30;
color:#000000;
margin-top:15px;
margin-bottom:15px;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,这会在验证摘要消息和每条错误消息周围绘制单独的框.当然不是我的想法.

我可以像这样在摘要周围添加一个div,但如果没有验证错误,这将导致一个空的红色框,所以这不是这样的:

  <div class="my-validation-summary">
        <h2>
            <%=Model.Message%>
        </h2>
        <%= Html.ValidationSummary("There were some errors...")%>
    </div>
Run Code Online (Sandbox Code Playgroud)

我可以想到几种方法来解决这个问题:

  • 使用服务器端标记有条件地添加边界div
  • 通过jQuery添加一个边界div
  • 编写我自己的HtmlHelper包装器,打印一个CSS友好的ValidationSummary

但是,所有这些对于解决这样一个简单的任务来说都很尴尬.必须有更好的方法来做到这一点.也许还有其他一些编写CSS类的方法,所以当没有验证摘要时我没有得到一个空盒子?

编辑:只是为了澄清,我正在调用这样的html帮助:

<%=Html.ValidationSummary("There were some errors...") %>
Run Code Online (Sandbox Code Playgroud)

编辑2:这个问题的范围是看我是否忽略了一些容易且明显的东西.好像我没有,所以我只是添加我自己的HtmlHelper功能,以满足我的需求.我投票支持我自己的问题.

css validation asp.net-mvc jquery html-helper

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

与IPhone SDK相比,Mono Touch有多好?

我是IPhone开发的新手,必须决定开发我的应用程序的合适工具.因为我知道C#/ .NET,但不是客观C,Mono Touch似乎对我很有吸引力.但值得多花400美元吗?

如果两者都试过,我会对你的意见感兴趣.

iphone xamarin.ios

8
推荐指数
4
解决办法
3529
查看次数

实体框架:设置新对象引用时自动更新外键

我正在将现有的应用程序从Linq移植到SQL到Entity Framework 4(默认代码生成).

我注意到两者之间的一个区别是重置对象引用时不会更新外键属性.现在我需要决定如何处理这个问题.

例如,假设您有两个实体类型,Company和Employee.一家公司有很多员工.

在Linq To SQL中,设置公司还设置公司ID:

var company=new Company(ID=1);
var employee=new Employee();
Debug.Assert(employee.CompanyID==0);
employee.Company=company;
Debug.Assert(employee.CompanyID==1); //Works fine!
Run Code Online (Sandbox Code Playgroud)

在实体框架中(并且不使用任何代码模板自定义),这不起作用:

var company=new Company(ID=1);
var employee=new Employee();
Debug.Assert(employee.CompanyID==0);
employee.Company=company;
Debug.Assert(employee.CompanyID==1); //Throws, since CompanyID was not updated!
Run Code Online (Sandbox Code Playgroud)

如何使EF的行为与LinqToSQL相同?我看了默认代码生成T4模板,但我无法弄清楚如何进行必要的更改.看起来像一个单行应该可以做到这一点,但我无法弄清楚如何获得给定引用的ID属性.

entity-framework linq-to-sql

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