在属性上放置简单的数据注释很棒,
public class UnicornViewModel
{
   [Required]
   public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是让我说我有这样的事情:
public class SuperPower
{
   public class Name { get; set; }
}
public class UnicornViewModel
{
   [Required]
   public string Name { get; set; }
   public SuperPower PrimarySuperPower { get; set; }
   public SuperPower SecondarySuperPower { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何在PrimarySuperPower.Name上应用Required属性,同时为SecondarySuperPower.Name保留可选属性?最好是1.与客户端验证相关的东西,2.没有任何特殊处理,比如检查Action/Custom验证器中的PrimarySuperPower.Name的值,如果它是空的,则添加ModelState错误.如果有类似的话会很棒:
   [Required(p => p.Name)]
   public SuperPower PrimarySuperPower { get; set; }
   public SuperPower SecondarySuperPower { get; set; }
Run Code Online (Sandbox Code Playgroud) 在以下示例中,
<uc1:MyUserControl>
   <p>this is html</p>
</uc1:MyUserControl>
Run Code Online (Sandbox Code Playgroud)
如何"<p>this is html</p>"在MyUserControl中以字符串形式访问,以便将其注入响应中?
我不是在谈论传递字符串参数<uc1:MyUserControl myparameter="<p>this is html</p>" />,而是如何在开始和结束标记之间或通过其他一些机制(如标记)访问真正的多行intellisensed HTML标记<MessageTemplate>.
在ASP.NET MVC 3中运行的解决方案的奖励积分!
编辑:
感谢StriplingWarrior和这个链接作为缺失的拼图,魔术制作:
所以,在任何观点:
<%@ Register src="../../Shared/Ribbon.ascx" tagname="Ribbon" tagprefix="uc1" %>
...
<uc1:Ribbon ID="Ribbon" runat="server">
    <Content>
    Hello world! I am <b>pure html</b> being passed into a UserControl!
    </Content>
</uc1:Ribbon>
Run Code Online (Sandbox Code Playgroud)
在Ribbon.ascx中:
<%@ Control Language="C#" CodeBehind="Ribbon.ascx.cs" Inherits="NunYourBeezwax.Views.Shared.Ribbon" %>
<table>
    <tr>
        <td>I am reusable stuff that wraps around dynamic content</td>
        <td><%= this.Content %></td>
        <td>And I am stuff too</td>
    </tr> …Run Code Online (Sandbox Code Playgroud) 我还是lambdas的新手并且发现很难找到它的特定功能,但是是否可以为通用列表中的每个对象执行一个方法?与ConvertAll的工作方式类似,但不是转换,而是实际调用方法.
public class Mouse()
{
    public void Squeak()
    {
    }
}
List<Mouse> mice = new List<Mouse>();
mice.Add(new Mouse());
mice.Add(new Mouse());
Run Code Online (Sandbox Code Playgroud)
你如何称呼每只鼠标的方法吱吱声?
mice.???(m => m.Squeak());
Run Code Online (Sandbox Code Playgroud) 我刚刚了解了COALESCE,我想知道是否可以在两个表之间COALESCE整行数据?如果没有,对于以下随机播放的最佳方法是什么?
例如,我有这两个表并假设所有列都匹配:
tbl_Employees
Id     Name     Email     Etc
-----------------------------------
1      Sue      ...       ...  
2      Rick     ...       ...  
Run Code Online (Sandbox Code Playgroud)
tbl_Customers
Id     Name     Email     Etc
-----------------------------------
1      Bob      ...       ...  
2      Dan      ...       ...  
3      Mary     ...       ... 
Run Code Online (Sandbox Code Playgroud)
和一个id为id的表:
tbl_PeopleInCompany
Id     CompanyId 
-----------------
1      1
2      1
3      1
Run Code Online (Sandbox Code Playgroud)
我想以一种方式查询数据,从第一个表中获取匹配id的行,但如果没有找到id,则从第二个表获取.
因此生成的查询看起来像:
Id     Name     Email     Etc
-----------------------------------
1      Sue      ...       ...  
2      Rick     ...       ...  
3      Mary     ...       ... 
Run Code Online (Sandbox Code Playgroud)
Sue和Rick从第一张桌子中取出,Mary从第二张桌子上取下.
使用新的Html5音频标签,onplay事件似乎只在第一次播放音频时触发.在此示例中,单击"播放"时,音频将以"正在播放"的警告弹出窗口开始播放.当音频完成并再次点击"播放"时,音频再次开始,但没有发出警报.我在这里错过了什么吗?我是否必须以某种方式重置音频?
<a href="#" onclick="$('#audio')[0].play();">Play</a>
<audio preload="none" id="audio" onplay="alert('playing');"><source type="audio/wav" src="..."></source></audio>
Run Code Online (Sandbox Code Playgroud)
我也尝试使用jQuery绑定到play事件,但我得到了相同的结果.
<a href="#" onclick="$('#audio')[0].play(); return false;">Play</a>
<audio preload="none" id="audio"><source type="audio/wav" src="..."></source></audio>
<script type="text/javascript">
    $(document).ready(function () {
        $('#audio')[0].bind('play', function () {
            alert("Playing");
        });
    });    
</script>
Run Code Online (Sandbox Code Playgroud) 这是一个重复的问题,但没有真正的解决方案。
那么我们开始吧。可以说我有:
public enum Color
{
    Red,
    Blue,
    Green
}
public class BlueUnicorn
{
    private const Color Color = Color.Blue;
}
Run Code Online (Sandbox Code Playgroud)
“大多数枚举类型使用单数名称,但对于位字段的枚举类型使用复数名称。” 取自Microsoft 的枚举类型命名指南 检查!
“考虑为属性指定与其类型相同的名称。” 从Microsoft 的类型成员名称 检查中检索!
根据 Resharper 的说法,我应该使用常量而不是只读
查看!
但我收到编译器错误。但这很奇怪,没有智能感知。“BlueUnicorn.Color”常量值的计算涉及循环定义。
我感觉自己正处于一场会议的间隙。根据最佳实践命名约定,该字段应该命名为什么?
我无法找到如何做到这一点.我可能没有正确的术语.
我有一个对象列表:
class Cat()
{
   public string Name { get; set; }
}
List<Cat> cats = new List<Cat>();
cats.add(new Cat() { Name = "Felix" } );
cats.add(new Cat() { Name = "Fluffy" } );
Run Code Online (Sandbox Code Playgroud)
如何从Name属性中获取字符串列表,如下所示:
{ "Felix", "Fluffy" }
Run Code Online (Sandbox Code Playgroud) 我以为我很聪明.但鉴于最近的发现,我不再那么肯定了.在页面生命周期中,可以通过任意数量的数据库交互.一些背靠背,其他人分散开来.所以我发明了一个对象,它在HttpContext.Items字典中保持SQL连接的实例.然后每个db请求都使用此连接,当http请求结束时,我正确处理了连接.我们正在看几百毫秒的连接将被打开,并且有一些沉重的http缓存,可用连接的耗尽并不是一个问题.
关键是要防止因建立新连接而增加往返次数.但是当我偶然发现连接池的知识时,我认为它很有效地保留了SqlConnection的有用性.或者是吗?
情景A是否与情景B相同,表现明智吗?你会推荐哪个?方案B是否没有提供性能提升,甚至可能因为某些边缘情况而无法正常处理?请原谅示例中的假性,我不想用barf将它们弄得乱七八糟.
一个
using (var connection = new SqlConnection(connectionString))
{
   using (var command = new SqlCommand("...", connection))
   {
      ... doing database stuff ...
   }
}
... traversing the stack ...
using (var connection = new SqlConnection(connectionString))
{
   using (var command = new SqlCommand("...", connection))
   {
      ... doing database stuff ...
   }
}
Run Code Online (Sandbox Code Playgroud)
乙
   var connectionKeeper = new ConnectionKeeper();
   // Add to the context items so it can be used anywhere
   Context.Items.Add("Connection", connectionKeeper);
   ... traversing the stack ...
   using (var …Run Code Online (Sandbox Code Playgroud) 我正忙着搞清楚我需要的SQL查询.
我有一个项目,为用户提供工作室级用户角色,每个项目都有项目级角色,覆盖/覆盖工作室级角色.所有角色都在工作室级别定义,但在项目级别仅定义了一些角色(主要是具有与其对应的工作室级别角色不同的值的角色)
g_studio_UsersInRole
userId  roleId  value
1       1       TRUE
1       2       TRUE
1       3       TRUE
2       1       FALSE
Run Code Online (Sandbox Code Playgroud)
g_project_UsersInRole
userId  roleId  value    projectId
1       2       FALSE    1
2       1       TRUE     1
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,它将项目角色覆盖在给定项目ID的工作室角色上.棘手的部分是避免重复的工作室级角色.我需要项目级角色(如果有的话)来支配.
我一直在玩Unions,但我无法弄清楚如何避免重复.
基本上我需要以下结果:
userId  roleId  value
1       1       TRUE
1       2       FALSE
1       3       TRUE
2       1       TRUE
Run Code Online (Sandbox Code Playgroud)
哪里
如项目层面所示
我以为我接近这个查询,但重复仍然存在:
;With roles As
(
SELECT     UserId, Value, RoleId
                       FROM          dbo.g_project_UsersInRole
                       WHERE      (ProjectId = 1)
                       UNION
                       SELECT     UserId, Value, RoleId
                       FROM         dbo.g_studio_UsersInRole)
SELECT     roles.RoleId, Value, UserId
FROM …Run Code Online (Sandbox Code Playgroud) 我有一个数据库,设置为使用blob FileStream在varbinary(max)字段上的音频文件.它的尺寸增加了80GB以上,我面临性能问题.
做了一些环顾四周后,我发现我的平均斑点大小约为180k.因为根据MSDN文件流应该用于超过1MB的对象,我正在重新评估我如何存储这些blob.MSDN还指出,"对于较小的对象,在数据库中存储varbinary(max)BLOB通常可以提供更好的流式传输性能." 所以我正在考虑从varbinary(max)到文件流,再到使用varbinary(max)字段.
所以我的问题是,有没有一种很好的方法使用sql脚本将每个文件流blob从文件流移动到实际的varbinary字段本身?在我决定要求之前,我一直在研究的另一种方法是让ac#app查询数据库中的blob并将每个blob写入文件系统.然后从数据库中手动删除文件流内容.然后让c#app从文件系统中读取blob并写回数据库.我认为必须有一个更简单的方法.
c# ×5
sql ×3
asp.net-mvc ×2
t-sql ×2
.net ×1
blob ×1
enums ×1
filestream ×1
generics ×1
html ×1
html5 ×1
javascript ×1
jquery ×1
lambda ×1
linq ×1
sql-server ×1
validation ×1