我对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
,但其他一切似乎都在起作用.
有什么想法会出错吗?
我有一个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会比另一种更慢地提供一种静态内容?
在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) 我正在尝试在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# ×3
.net ×1
asp.net-mvc ×1
azure ×1
data-binding ×1
ef-core-2.0 ×1
iis ×1
validation ×1
wpf ×1