小编Mat*_*ins的帖子

MaxLength属性不生成客户端验证属性

我对ASP.NET MVC3客户端验证有一个奇怪的问题.我有以下课程:

public class Instrument : BaseObject
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Name is required.")]
    [MaxLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从我的观点来看:

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

这是我为此字段的文本框获取的生成的HTML:

<input class="text-box single-line" data-val="true" data-val-required="Name is required." id="Name" name="Name" type="text" value="">
Run Code Online (Sandbox Code Playgroud)

没有迹象MaxLengthAttribute,但其他一切似乎都在起作用.

有什么想法会出错吗?

c# validation asp.net-mvc model-validation asp.net-mvc-3

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

Azure网站缓慢提供静态JS/CSS而不是二进制

我有一个Azure网站/ Web应用程序,提供静态JS和CSS文件非常慢,但似乎完全没有服务二进制文件.

为了测试这个问题,我上传了两个30MB的文件,一个是big.js,另一个是big.rar.如果我很幸运,JS文件的下载量大约为100KB/s.RAR文件的下载速度约为4,000KB/s.结果非常一致.

我已经检查了Fiddler并且两种情况都发生了gzip压缩.正如所料,JS文件使用MIME类型application/x-javascript发送,而RAR文件作为application/octet-stream提供.

我很难理解这一点 - 为什么IIS会比另一种更慢地提供一种静态内容?

iis azure static-content azure-web-sites

34
推荐指数
2
解决办法
3853
查看次数

将控件绑定到WPF中的集合/数组中的单个值

在WPF我有一个bool的集合?我希望以编程方式将这些值中的每一个绑定到一个单独的复选框.我希望绑定是TwoWay,以便在代码中更改集合中单个项的值更新复选框,反之亦然.

我花了很长时间试图弄清楚如何做到这一点,我完全卡住了.使用以下代码,复选框仅在窗口加载时获得正确的值,就是这样.更改复选框甚至不更新集合中的值.(更新:这似乎是.NET4中的一个错误,因为该集合在相同的.NET3.5项目中得到更新.更新:Microsoft已经确认了该错误,并且它将在.NET4版本中得到修复.)

非常感谢您的帮助!

C#:

namespace MyNamespace
{
    public partial class MyWindow : Window, INotifyPropertyChanged
    {
        public MyWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
               PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }

        public List<bool?> myCollection = new List<bool?>
            { true, false, true, false, true, false };

        public List<bool?> MyCollection
        {
            get { return myCollection; }
            set { myCollection = value; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<CheckBox IsChecked="{Binding Path=MyCollection[0], Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding wpf two-way-binding

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

EF Core中已修改实体的拥有类型属性不存在

我正在尝试在EF Core中实现一些在EF 6中非常适合我的东西.

我将List<T>属性的内容序列化为DB中的Json字符串.<T>可以是几乎任何东西,因为Json.Net负责序列化我们抛出的任何东西.我的集合公开了一个Json字符串属性,并负责序列化/反序列化.

这种方法对于结构化嵌套数据来说是方便有效的,其中关系模型会带来不必要的开销和复杂性.

在EF 6中我会做这样的事情:

[ComplexType]
public class SelfSerializingCollection<T> : Collection<T>
{
    public void AddRange(IEnumerable<T> collection)
    {
        foreach (var item in collection)
        {
            Add(item);
        }
    }

    protected string Json
    {
        get { return JsonConvert.SerializeObject(this); }
        private set
        {
            Clear();

            if (value == null)
            {
                return;
            }

            AddRange(JsonConvert.DeserializeObject<T[]>(value));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

EF 6不支持映射泛型类型,因此我们为每种类型的List提供了我们可能需要的具体实现:

public class PhoneNumberCollection : SelfSerializingCollection<PhoneNumber> { }
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

public class Contact {
    public PhoneNumberCollection PhoneNumbers { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-core ef-core-2.0

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