相关疑难解决方法(0)

在foreach循环内部或外部声明变量:哪个更快/更好?

哪一个更快/更好?

这个:

List<User> list = new List<User>();
User u;

foreach (string s in l)
{
    u = new User();
    u.Name = s;
    list.Add(u);
}
Run Code Online (Sandbox Code Playgroud)

或者这一个:

List<User> list = new List<User>();

foreach (string s in l)
{
    User u = new User();
    u.Name = s;
    list.Add(u);
}
Run Code Online (Sandbox Code Playgroud)

我的新手开发技巧告诉我第一个更好,但是我的一个朋友告诉我错误,但不能给我一个很好的理由为什么第二个更好.

性能有什么不同吗?

c# foreach

84
推荐指数
4
解决办法
4万
查看次数

MVC 3.0 ModelBinder bindingContext.ValueProvider.GetValue(key)在集合中绑定时返回null

我是新的使用自定义ModelBinders,我一直在环顾四周,我找不到任何与此特定案例相关的帖子.

我有一个像这样的实体:

 public class DynamicData
    {
       public IList<DynamicDataItem> DynamicDataItems{get;set;}
    }
Run Code Online (Sandbox Code Playgroud)

在视图中我绑定它如下:

@Html.EditorFor(model => model.DynamicDataItems);
Run Code Online (Sandbox Code Playgroud)

我在DynamicDataItems类中有特殊信息,我想以特定的方式检索,所以我创建了自己的Model Binder.

public class DynamicDataItemBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext,
            ModelBindingContext bindingContext)
        {
            var key = bindingContext.ModelName;
            var valueProviderResult = bindingContext.ValueProvider
                .GetValue(key);

            if (valueProviderResult == null ||
                string.IsNullOrEmpty(valueProviderResult
                    .AttemptedValue))
            {
                return null;
            }

            //Here retrieve my own Information

            return DynamicDataItem;
        }
    }
Run Code Online (Sandbox Code Playgroud)

bindingContext.ModelName包含"DynamicDataItem [0]".

如果我使用bindingContext.ValueProvider.ContainsPrefix(key),它返回true,但是当我执行GetValue(key)时,它返回null.如果我检查ValueProvider包含的内容,我会看到在"DynamicDataItem [0]"中有几个项目的Key Starting.我如何处理从当前绑定的项目的所有字段中检索信息("DynamicDataItem [0]")?我应该逐一检索它们吗?像这样:

 var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
 var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
Run Code Online (Sandbox Code Playgroud)

我将非常感谢您给我的任何指导.

c# asp.net-mvc modelbinder

11
推荐指数
1
解决办法
9231
查看次数

标签 统计

c# ×2

asp.net-mvc ×1

foreach ×1

modelbinder ×1