假设我有一个像这样的POCO:
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
FirstName和LastName不能为null.我应该添加这样的方法:
public List<Error> Validate()
{
var errors = new List<Error>();
if (String.IsNullOrEmpty(FirstName))
errors.Add(new Error("FirstName", "You must fill out first name."));
if (String.IsNullOrEmpty(LastName))
errors.Add(new Error("LastName", "You must fill out last name."));
}
Run Code Online (Sandbox Code Playgroud)
where Error是包含a的结构NameValueDictionary.这是一种很好的做事方式吗?我可能会发现存储库存在问题,有人试图保存此POCO而不先运行它Validate().
在ASP.NET MVC 3 RC2中,默认的ModelBinder将自动解析请求正文(如果Content-Type设置为)application/json.问题是,这留下Request.InputStream了流的末尾.这意味着如果您尝试使用自己的代码读取输入流,则首先将其重置为开头:
// client sends HTTP request with Content-Type: application/json and a JSON
// string in the body
// requestBody is null because the stream is already at the end
var requestBody = new StreamReader(Request.InputStream).ReadToEnd();
// resets the position back to the beginning of the input stream
var reader = new StreamReader(Request.InputStream);
reader.BaseStream.Position = 0;
var requestBody = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
因为我正在使用Json.NET序列化/反序列化,所以我想禁用默认的ModelBinder进行额外的解析.有没有办法做到这一点?
我有一个扁平的JSON:
{
"CaseName" : "John Doe v. State",
"CaseDate" : "<some date>",
"Client.FirstName" : "John",
"Client.LastName" : "Doe",
"Client.Email" : "johndoe@gmail.com"
etc...
}
Run Code Online (Sandbox Code Playgroud)
我想将它反序列化回这个实体:
public class Case()
{
public string CaseName { get; set; }
public string CaseDate { get; set; }
public Client Client { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
where Client.FirstName,Client.LastName和Client.Email是Client对象中的属性.使用Json.NET,有没有办法让它解析点符号并正确反序列化这个实体?目前,使用默认设置,它告诉我这Client.FirstName不是类型中的属性Case.
假设我有以下字体外观定义:
@font-face {
font-family: "Open Sans";
font-style: normal;
font-weight: 400;
src: url("../fonts/open-sans.regular.woff") format("woff");
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: url('../fonts/open-sans.light.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: url('../fonts/open-sans.semibold.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: url('../fonts/open-sans.bold.woff') format('woff');
}
Run Code Online (Sandbox Code Playgroud)
在Chrome的开发工具中,我可以分辨出正在使用的字体系列:
但有没有办法告诉使用哪个特定的字体文件?我正在尝试验证浏览器实际上是使用字体的粗体版本,例如,而不是在常规版本的字体上执行自己的"假"粗体.
我有一个控制器只接受此URL上的POST:
POST http://server/stores/123/products
Run Code Online (Sandbox Code Playgroud)
POST应该是content-type application/json,所以这就是我在路由表中的内容:
routes.MapRoute(null,
"stores/{storeId}/products",
new { controller = "Store", action = "Save" },
new {
httpMethod = new HttpMethodConstraint("POST"),
json = new JsonConstraint()
}
);
Run Code Online (Sandbox Code Playgroud)
在哪里JsonConstraint:
public class JsonConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return httpContext.Request.ContentType == "application/json";
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用这条路线时,我得到了一个405 Forbidden:
The HTTP verb POST used to access path '/stores/123/products' is not allowed
但是,如果我删除json = new JsonConstraint()约束,它工作正常.有人知道我做错了什么吗?
我有一组WPF CheckBoxes,它们有一个Checked事件处理程序,当用户点击其中一个时,它处理一些逻辑.但是,我还有一个"全部清除"按钮,单击该按钮将清除所有复选框.如果用户点击"全部清除"按钮,我不希望复选框触发他们的Checked事件.有办法做到这一点吗?
我有一个由以下类表示的文件夹层次结构:
public class Folder
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Folder ParentFolder { get; set; }
public virtual ICollection<Folder> SubFolders { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
换句话说,每个都Folder可以属于一个ParentFolder,也可以属于SubFolders它.我正在使用Fluent NHibernate Automapper并使用自动生成数据库模式SchemaExport.当我尝试保存一些测试文件夹时,我得到下表:
Id | Name | ParentFolder_id | Folder_id
----------------------------------------------------------------
1 | Root Folder (has children) | NULL | NULL
2 | Root Folder (no children) | NULL | NULL
3 | …Run Code Online (Sandbox Code Playgroud) 我有一个ColdFusion组件,它将返回一些JSON数据:
component
{
remote function GetPeople() returnformat="json"
{
var people = entityLoad("Person");
return people;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,返回的JSON具有大写的所有属性名称:
[
{
FIRSTNAME: "John",
LASTNAME: "Doe"
},
{
FIRSTNAME: "Jane",
LASTNAME: "Dover
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法强制框架返回JSON,以便属性名称都是小写的(可能是其他人编写的自定义UDF/CFC)?
我有一个应用程序,我想使用国家/地区的本机货币格式来格式化货币.问题是,某些国家/地区使用多种货币,但.NET仅为每个国家/地区分配一种货币.例如,罗马尼亚使用EUR和RON.当我从.NET获取货币信息时:
var cultureInfo = new CultureInfo("ro-RO");
Console.WriteLine("cultureInfo.NumberFormat.CurrencySymbol);
Run Code Online (Sandbox Code Playgroud)
输出是leu,这是RON货币类型.
我如何在.NET中获得此案例的欧元?我有3个字母的ISO货币代码(EUR)和国家语言(ro-RO),但我不知道如何使用此信息来获取格式正确的欧元货币字符串.
我看到很多文章说在Hibernate中使用二级缓存会提高性能,但对使用它的缺点却没有太大帮助.我不想将二级缓存视为一种神奇的"在这里启用免费更好的性能!" 按钮.任何人都可以描述使用二级缓存的缺点,以便我能够意识到使用它的含义吗?
c# ×4
asp.net-mvc ×3
.net-3.5 ×1
asp.net ×1
caching ×1
checkbox ×1
coldfusion ×1
coldfusion-9 ×1
css ×1
css3 ×1
currency ×1
events ×1
font-face ×1
hibernate ×1
json ×1
json.net ×1
mapping ×1
modelbinders ×1
nhibernate ×1
poco ×1
routing ×1
syntax ×1
validation ×1
wpf ×1