在阅读ScottGU关于该主题的博客文章后,我一直在修改ASP.net MVC中的客户端验证功能.使用System.Componentmodel.DataAnnotations属性非常容易,如下所示:
[Required(ErrorMessage = "You must specify a reason")]
public string ReasonText { get; set; }
Run Code Online (Sandbox Code Playgroud)
......但是如果你需要一些更复杂的东西会发生什么.如果您的Address类具有PostalCode和CountryCode字段,该怎么办?您可能希望根据每个国家/地区的不同正则表达式验证邮政编码.[0-9] {5}适用于美国,但加拿大需要另外一个.
我通过滚动自己的ValidationService类来解决这个问题,该类接受控制器的ModelState属性并相应地验证它.这在服务器端运行良好,但不适用于花哨的新客户端验证.
在Webforms中,我会使用像JavaScript一样的控件,比如RequiredFieldValidator或CompareValidator,然后使用CustomValidator来处理复杂的规则.这样我就可以在一个地方拥有所有验证逻辑,并且我可以获得快速javascript验证的好处(90%的时间),同时我仍然可以将服务器端验证的安全性作为支持.
MVC中的等效方法是什么?
可以说我写了一个简单的CSS规则:
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
Run Code Online (Sandbox Code Playgroud)
我需要10个,所以我复制了9次.
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
Run Code Online (Sandbox Code Playgroud)
等等
现在我想用增量值更改star_10和0 0,所以它看起来像这样:
.star_10 {
background: url(stars.png) no-repeat 0 0;
}
.star_9 {
background: url(stars.png) no-repeat 0 -18px;
}
.star_8 {
background: url(stars.png) no-repeat 0 -36px; …Run Code Online (Sandbox Code Playgroud) 嘿.我在wordpress中使用自定义帖子类型.我注册这样的自定义帖子类型:
register_post_type("lifestream", array(
'label' => 'Lifestream',
'public' => true,
'hierarchical' => true,
'menu_position' => 5,
'supports' => array('title','editor','author','thumbnail','comments','custom-fields'),
'taxonomies' => array('category','post_tag'),
'query_var' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'caller_get_posts' => 1
));
register_taxonomy_for_object_type('category', 'lifestream');
register_taxonomy_for_object_type('post_tag', 'lifestream');
Run Code Online (Sandbox Code Playgroud)
在主题(循环模板)中我喜欢组合帖子和我的自定义帖子类型,因为我使用query_posts()与这些参数:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => array('post', 'lifestream'),
'paged' => $paged,
'cat' => $wp_query->get('cat'),
'tag' => $wp_query->get('tag'),
'year' => $wp_query->get('year'),
'monthnum' => $wp_query->get('monthnum'),
'post_status' => 'publish',
'showposts' => 3
);
query_posts($args);
# the loop
while …Run Code Online (Sandbox Code Playgroud) 我的可调整大小的JScrollPane的内容具有最小宽度.如果JScrollPane小于此宽度,则应显示水平滚动条.如果它大于此宽度,则视口内容应展开以填充整个视口.
看起来像一个简单的概念,我有一些工作,但感觉就像一个黑客:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class SSBTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final Component view = new MyView();
final JScrollPane jScrollPane = new JScrollPane(view);
jScrollPane.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(final ComponentEvent e) {
final Dimension minimumSize = view.getMinimumSize();
final int width = Math.max(minimumSize.width, jScrollPane.getViewport().getWidth());
view.setPreferredSize(new Dimension(width, minimumSize.height));
}
});
showInDialog(jScrollPane);
}
});
}
private static void showInDialog(final JScrollPane jScrollPane) {
final JDialog dialog = …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试序列化List,它序列化(我认为很好),但是当它反序列化时,
很抱歉代码的数量,但我真的卡住了,不知道为什么会发生这种情况,我也试图将结构改成一个类而没有帮助.
谢谢.
我得到以下错误更新
There was an error deserializing the object of type There was an error deserializing the object of type
`System.Collections.Generic.List`1[[A.B.C.DataValues, A.V, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Unexpected end of file. Following elements are not closed: Time, DataValues, ArrayOfDataValues.`
Run Code Online (Sandbox Code Playgroud)
我像这样更新了序列化
public void SerializeDataValue(List<DataValues> values)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(List<DataValues>));
using (MemoryStream stream = new MemoryStream())
{
using (GZipStream compress = new GZipStream(stream, CompressionMode.Compress))
{
XmlDictionaryWriter w = XmlDictionaryWriter.CreateBinaryWriter(compress);
serializer.WriteObject(w, values);
}
_serializedData = stream.ToArray();
}
} …Run Code Online (Sandbox Code Playgroud) 我看到人们存储数组如下:
a:6:{i:0;s:5:"11148";i:1;s:5:"11149";i:2;s:5:"11150";i:3;s:5:"11153";i:4;s:5:"11152";i:5;s:5:"11160";}
他们为什么不能这样做:
11148,11149,11150,11153...
并有sql"类型"是"数组"?
这样它更短,你可以直接在数据库中更改值,而不必改变"s:"或"i:".
如何将一部分字节数组附加到Java下的StringBuilder对象?我有一个函数段,从InputStream读取到一个字节数组.然后我想将我读到的任何内容追加到StringBuilder对象中:
byte[] buffer = new byte[4096];
InputStream is;
//
//some setup code
//
while (is.available() > 0)
{
int len = is.read(buffer);
//I want to append buffer[0] to buffer[len] into StringBuilder at this point
}
Run Code Online (Sandbox Code Playgroud) for (int i=1;i<10;i++)
{
if something == true
do something
else
do something
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的事情:在循环之外对于,我需要总结一下我something = true和哪个我something = false.
我对ruby / rails方法的命名约定或良好实践有一个简短的问题。请考虑以下方法:
# some methods performing some sort of 'action'
def action; end
def action!; end
# some methods checking if performing 'action' is permitted
def action?; end
def can_action?; end
def action_allowed?; end
Run Code Online (Sandbox Code Playgroud)
因此,我想知道,三种“与”方法中的哪一种是寻求许可的“最佳”方法。我会以某种方式选择第一个,但是在某些情况下,我认为这可能与含义混淆has_performed_action?。因此,第二种方法可能使这一点更清晰,但也有些冗长。第三个实际上只是为了完整性。我真的不喜欢那个。
那么,有没有为此达成共识的良好做法?
首先,我知道全局变量是邪恶的:)然而,有合法的情况,为什么我需要使用一个.
我知道在DllMain中可以执行的内容有非常严格的限制(没有LoadLibraries,没有COM初始化等等).
我知道全局变量在DllMain DLL_PROCESS_ATTACH之前初始化.
全局变量初始化时是否有相同的限制?
我发现微软文章:http://msdn.microsoft.com/en-us/library/988ye33t 但是,它没有任何与限制相关的细节.
我还看到了另一个Stackoverflow问题:在DLL中声明的全局变量会发生什么? 这里有一段摘录"在DllMain中有些东西是被禁止的.在构造函数中也可能禁止这些东西."
但是,看起来评论员不确定这些限制是否确实存在.
我希望有关此主题的任何信息.