见下图.我正在以编程方式构建图表,所以请不要使用asp.net控件语法.

如何更改条形后面水平和垂直交叉的网格线颜色?如您所见,我已经找到了如何更改实际的轴颜色,但网格颜色保持黑色.
public ActionResult RenderChart()
{
var chart = new Chart();
double[] yValues = { 65.62, 75.54, 60.45, 55.73, 70.42 };
string[] xValues = { "Michelle", "Sarah", "Aliece", "Belinda", "Amanda" };
var series = new Series
{
Name = "Default",
ChartType = SeriesChartType.Column,
CustomProperties = "DrawingStyle=Cylinder"
};
series.Points.DataBindXY(xValues, yValues);
chart.BorderlineColor = Color.Silver;
var area = new ChartArea("Test");
area.AxisX.LineColor = Color.DarkGray;
area.AxisY.LineColor = Color.DarkGray;
chart.ChartAreas.Add(area);
chart.Series.Add(series);
series.IsValueShownAsLabel = true;
series.Font = new Font(series.Font, FontStyle.Bold);
chart.Width = 400;
chart.Height = 300;
using(var …Run Code Online (Sandbox Code Playgroud) 我有一个问题出现在我试图发布的表格中.在表单未验证的情况下,我采用标准的调用路径,ModelState.AddModelError()然后返回View结果.
问题是,HTML.*助手应该在渲染时获取已发布的值,并且我注意到我的文本字段仅在我将其包含在回发操作的参数列表中时才这样做,这不应该是必需的看到某些表单有太多的字段想要将它们全部列为参数.
我的行动代码大致是:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name)
{
var dataDefinition = ...
// do some validation stuff
if (!ModelState.IsValid)
{
// manually set checkbox fields via ViewData seeing as this STILL doesn't work in MC 1.0 :P
// ...
return View(dataDefinition);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,dataDefinition(它是一个LINQ to SQL实体)有一个字段MinVolume,在这一行的视图中处理:
Minimum: <%= Html.TextBox("MinVolume", null, new { size = 5 })%>
Run Code Online (Sandbox Code Playgroud)
然而,当在模型状态验证失败后呈现视图时,在我们发布的原始页面上键入的值不会被保留,除非我将其作为参数包含在回发方法中.从字面上看,我可以通过这样做来"解决问题":
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name, string minVolume)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,将强制保留字段值.这对我来说似乎很愚蠢,因为我的表单有更多的价值而不仅仅是那个,我不应该只为该字段添加参数.
有任何想法吗?
请参阅下面的Go()方法中的四行:
delegate void Action<T>(T arg);
delegate void Action();
void DoSomething<T>(Action<T> action)
{
//...
}
void DoSomething(Action action)
{
//...
}
void MyAction<T>(T arg)
{
//...
}
void MyAction()
{
//...
}
void Go<T>()
{
DoSomething<T>(MyAction<T>); // throws compiler error - why?
DoSomething(new Action<T>(MyAction<T>)); // no problems here
DoSomething(MyAction); // what's the difference between this...
DoSomething(new Action(MyAction)); // ... and this?
}
Run Code Online (Sandbox Code Playgroud)
请注意,第一次调用生成的编译器错误是: 方法"Action(T)"的类型参数无法从用法中推断出来.尝试显式指定类型参数.
另一章来自"我和其他高级开发者之间的争论"系列:P
我的立场是,在进行Web开发时,首先要编写浏览器代码以遵守W3C Web标准,即使Internet Exploder具有更大的市场份额(根据谁在进行跟踪,任何地方在51%到79%之间) .我的理由是:
标准被锁定,所有浏览器开发人员都在朝着所有设定标准的最低100%无错误支持迈进.因此,应该围绕Firefox/Chrome/Safari编写和测试代码,这些代码比IE8更接近正确的标准支持,然后应该在IE中使用条件标记来解决它的错误.尤其如此,因为您可以使用条件标记来解决IE错误,但如果您尝试反向编写代码,则编写黑客攻击强制Firefox/Safari /等正确显示已编码的HTML/CSS会更加困难.
如果您为标准设计,那么您将面向未来,因为所有浏览器都瞄准同一个地方,标准方面,这意味着您不会成为每次必须修复应用程序的人群之一.新的浏览器版本更接近于Web标准,从而使您的一些初始黑客现在打破了布局.
为了支持更大的市场份额而编写一些破碎的东西,然后为了较小的市场份额"不破",如果你有时间,似乎是一种粗心的方式来接近一份工作,并暗示你认为20%的市场份额是微不足道的,我认为离真相很远.
我的合作开发者辩称:
不同的浏览器公司喜欢用他们自己的切线,并且不关心标准,所以尝试编写标准是浪费时间.
只要页面大致以可用的方式显示在这些浏览器中,编码以支持少数约20%的市场份额是不值得的.
浏览器是浏览器,是浏览器.它只是渲染文本的视口,我不应该担心看起来完全正确的事情.
无论如何,当他更喜欢IE8时,必须在Firefox中进行开发是一件痛苦的事.
我是负责人,当然我可以说"这是它的方式",但我讨厌只是一个纳粹并说"我的方式或高速公路"; 我认为最好让其他人理解为什么我们以某种方式做某事以便我们在进行时达成一致,因此我们所遵循的惯例会受到关注,因为他们背后的理由受到赞赏而不是不情愿紧随其后.
我可以参考这个论点吗?
我遇到ASP.Net MVC3(RC2)的问题.我发现新的JSON模型绑定功能(隐含在MVC3中)不希望反序列化为具有枚举类型的属性.
这是一个示例类和枚举类型:
public enum MyEnum { Nothing = 0, SomeValue = 5 }
public class MyClass
{
public MyEnum Value { get; set; }
public string OtherValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请考虑以下代码,它成功通过了单元测试:
[TestMethod]
public void Test()
{
var jss = new JavaScriptSerializer();
var obj1 = new MyClass { Value = MyEnum.SomeValue };
var json = jss.Serialize(obj1);
var obj2 = jss.Deserialize<MyClass>(json);
Assert.AreEqual(obj1.Value, obj2.Value);
}
Run Code Online (Sandbox Code Playgroud)
如果我obj1在上面序列化,然后使用MyClass类型的单个参数将该数据发布到MVC3控制器(下面的示例),则对象的任何其他属性都会正确反序列化,但任何枚举类型的属性都会反序列化为默认值(零)值.
[HttpPost]
public ActionResult TestAction(MyClass data)
{
return Content(data.Value.ToString()); // displays "Nothing"
} …Run Code Online (Sandbox Code Playgroud) 我有一个通用的可执行文件,它承载一个根据命令行参数选择的插件.在任务管理器中,有一个名为"描述"的列,对于我的进程来说是空白的.由于我的主机进程有多个实例在运行,我无法确定哪个进程在任务管理器中.如何在运行时更新描述字段的值,以便我可以识别哪个插件在哪个进程中加载?
我想生成一个对象,该对象将能够有效地作为补丁应用于数组 A 以生成数组 B。
给定一个函数isSame,它比较两个值并在它们相同时返回真,否则返回假(其目的是比较两个数组元素),是否有已知的算法来计算两个数组之间的差异并返回一个列表具体区别?差异将由以下集合组成:在索引 Y 处删除的 X 元素和在索引 Y 处插入的以下元素。
我写过一些这样的作品,但目前它有问题,我无法继续前进,而且我担心当其他人可能已经这样做时我正在重新发明轮子。http://jsfiddle.net/G6tYt/1/
FreeGLUT API文档中没有包含条目glutInitContextVersion,当我谷歌搜索它时,我发现的所有问题都没有直接解决其使用或效果.
是否记录在任何地方?
规范glVertexAttribPointer如下:
void glVertexAttribPointer( GLuint index,
GLint size,
GLenum type,
GLboolean normalized,
GLsizei stride,
const GLvoid * pointer);
Run Code Online (Sandbox Code Playgroud)
鉴于最后一个参数只是一个4字节的整数偏移量,为什么OpenGL期望它作为void指针传入?
有什么方法可以观察 ES6 地图和集合的添加和删除吗?Object.observe不起作用,因为它仅适用于被观察对象的直接属性。假设size可以观察到该属性,但不会提供具体发生了什么变化的指示。另一个想法是用代理版本替换对象set和函数。get有没有更好的办法?如果没有,我很惊讶在为 ES6 编写提案时没有人想到这一点。
.net ×3
c# ×3
opengl ×2
.net-2.0 ×1
arrays ×1
asp.net-mvc ×1
charts ×1
delegates ×1
dictionary ×1
diff ×1
ecmascript-6 ×1
freeglut ×1
generics ×1
html-helper ×1
javascript ×1
json ×1
patch ×1
process ×1
set ×1
standards ×1
taskmanager ×1
w3c ×1