小编Jar*_*red的帖子

模型绑定时在视图模型属性上查找自定义属性

我发现了很多关于为验证目的实现自定义模型绑定器的信息,但我还没有看到我正在尝试做什么.

我希望能够根据视图模型中属性的属性来操作模型绑定器要设置的值.例如:

public class FooViewModel : ViewModel
{
    [AddBar]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

AddBar就是

public class AddBarAttribute : System.Attribute
{
}
Run Code Online (Sandbox Code Playgroud)

我无法在自定义模型绑定器的BindModel方法中找到一种在查看模型属性上查找属性的简洁方法.这有效,但感觉应该有一个更简单的解决方案:

public class FooBarModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = base.BindModel(controllerContext, bindingContext);

        var hasBarAttribute = false;

        if(bindingContext.ModelMetadata.ContainerType != null)
        {
            var property = bindingContext.ModelMetadata.ContainerType.GetProperties()
                .Where(x => x.Name == bindingContext.ModelMetadata.PropertyName).FirstOrDefault();
            hasBarAttribute = property != null && property.GetCustomAttributes(true).Where(x => x.GetType() == typeof(AddBarAttribute)).Count() > 0;
        }

        if(value.GetType() == typeof(String) && …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc custom-attributes model-binding

15
推荐指数
1
解决办法
7287
查看次数

测试操作时如何在flash中放置一个值

我正在尝试测试需要存储在闪存中的值的操作.

def my_action
  if flash[:something].nil?
    redirect_to root_path if flash[:something]
    return
  end

  # Do some other stuff
end
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我做了类似的事情:

before(:each) do
  flash[:something] = "bob"
end

it "should do whatever I had commented out above" do
  get :my_action
  # Assert something
end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是flash在my_action中没有值.我猜这是因为没有请求实际发生.

有没有办法为这样的测试设置闪存?

ruby rspec ruby-on-rails ruby-on-rails-3

11
推荐指数
3
解决办法
2180
查看次数

如何在RubyMine中插入Rdoc注释

当我使用Visual Studio时,我习惯于在方法定义的开头只用几个按键来插入XML注释(我想///但它已经有一段时间了).有没有办法在开箱即用的RubyMine中的方法之前插入RDoc注释?如果是这样,键盘快捷键是什么?

rdoc rubymine

10
推荐指数
1
解决办法
1502
查看次数

构建仍使用iOS功能的样式化选择列表

设置文本输入并使其在iOS中正常工作非常容易.右边我的意思是屏幕键盘仍然会按预期打开,而上一个|下一个按钮仍然允许你在输入之间切换.

大多数美化的选择列表似乎取代了实际的...与其他元素,以获得漂亮的外观.这适用于iOS,但如果您是上一个|通过一堆输入进行连接,它将无法按预期运行.

是否可以设置一个选择列表的样式,以便它可以像普通的那样工作但看起来像是从Dropkick JS或其他库(或自己构建)获得的东西?我考虑过在元素后面隐藏一个真正的选择,但我认为我不能用javascript正确打开列表.

css mobile-safari ios

8
推荐指数
1
解决办法
2万
查看次数

如何在Azure表存储中嵌入文档

我希望能够使用如下结构在Azure表存储中存储具有子对象的对象:

public class AzureTestDocument : TableServiceEntity
{
    public AzureTestDocument(int counter)
        : base("_default", counter.ToString())
    {
        Counter = counter;
        Child = new AzureTestChildDocument(counter);
    }

    public int Counter { get; set; }
}

public class AzureTestChildDocument
{
    public AzureTestChildDocument(int counter)
    {
        Counter = counter;
    }

    public int Counter { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果删除子文档,保存父文档可以正常工作.保存这样的结构会导致"其中一个请求输入无效"异常.做一些谷歌搜索出现了这篇文章关于支持的类型,这可能意味着你不能嵌入除支持的那些短列表之外的任何类型.

请澄清是否是这种情况或指出我可能缺少的东西.

azure nosql azure-storage azure-table-storage

2
推荐指数
1
解决办法
1155
查看次数