小编jzm*_*jzm的帖子

C#如何使用接口

这是一个相对直截了当的问题.但我想知道通过使用接口访问单独项目中的方法的正确用法是什么.

项目:Test.ClassLibrary

界面:

public interface ITest
{
    string TestMethod();
}
Run Code Online (Sandbox Code Playgroud)

课程:

public class Test : ITest
{
    public string TestMethod()
    {
        return "Test";
    }
}
Run Code Online (Sandbox Code Playgroud)

项目: Test.Web

控制器:

public class HomeController : Controller
{
    private ITest test;
    public ActionResult Index()
    {
        return Content(test.TestMethod());
    }

}
Run Code Online (Sandbox Code Playgroud)

以上返回a NullReferenceException.我假设它是因为控制器到达接口,并且不知道接下来要去哪里.

解决这个问题的最佳方法是什么?我是否必须Test在控制器中引用该类,或者我可以通过仅引用来解决这些问题ITest

c# interface

14
推荐指数
2
解决办法
5万
查看次数

C#:Func <>而不是方法?

这是一个好奇的问题,你们都知道:

使用Func而不是方法有什么危害/缺点吗?简单的例子:

private static Func<int, int, DBContext, List<T>> Foo =
    (i1, i2, dbc) =>
        (i1 != 0) ? dbc.Bar(i2) : new List<T> { /*some default values ...*/ };
Run Code Online (Sandbox Code Playgroud)

VS

private static List<T> Foo(int i1, int i2, DBContext dbc)
{
    return i1 != 0 ? dbc.Bar(i2) : new List<T> { /*some default values ...*/ };
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq func c#-4.0

13
推荐指数
2
解决办法
8087
查看次数

使用Async数据初始化组件

我正在试图找出如何以及在何处加载数据(即我的动作上的调用调度)for react + redux + thunk中的选择框.我不确定它是否应该放在我的App容器的构造函数中,或者我应该将它加载到我的组件中(在我的示例中:"MyDropdown")

我的主要应用:

import MyDropdown from '../components/mydropdown';
// Should i import my action here and then...
// import { loadData } from '../actions';

class App extends Component {
  render() {
    return (
      <div className="page-content">
        <div className="option-bar">
          // SEND it as a PROP inside MyDropdown... 
          <MyDropdown />
        </div>
      </div>
    );
  }
}
export default App;
Run Code Online (Sandbox Code Playgroud)

我的组件

// OR.. Should i load it in my MyDropdown component here?
import { loadData } from '../actions';

class MyDropdown …
Run Code Online (Sandbox Code Playgroud)

reactjs redux redux-thunk react-redux

13
推荐指数
1
解决办法
5684
查看次数

LINQ:何时使用编译查询?

我想就此提出一些专家建议.我之前使用过编译查询,但对于这种特殊情况,我不确定它是否合适.

它是一个搜索表单,其中查询更改并依赖于正在搜索的内容.

static Func<DBContext, int, IQueryable<Foo>> Search = CompiledQuery.Compile(
    (DBContext db, int ID) =>
        db.Person
            .Where(w => w.LocationID = ID)
            .Select(s => 
                new Foo 
                { 
                    Name = s.PersonName, 
                    Age = s.Age,
                    Location = s.LocationName,
                    Kin = s.Kin
                }));
Run Code Online (Sandbox Code Playgroud)

现在如果有人填写搜索框,我想通过向查询添加另一个Where语句来扩展查询:

var query = Search(context, 123);
query = query.Where(w => w.Name.Contains(searchString));
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,它将所有结果返回到哪里LocationID == 123,然后检查searchString匹配的结果?或者它实际上是否扩展了编译的查询?

如果它是前者(我怀疑它是),应该废弃CompiledQuery并只创建一个扩展查询的方法然后将其作为列表返回?

此外,最佳CompiledQuery使用方法是什么,是否有使用时间的指导原则?

注意:我在使用Linq to SQLASP.NET网站中使用上述内容.不确定这是否有所不同.

谢谢

c# linq linq-to-sql compiled-query

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

MVC3自定义格式化日期的不显眼日期验证

我有一个日期字段(我使用jquery ui datepicker)在我格式化的表单中,如下所示:

视图模型

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

视图

@Html.EditorFor(m => m.FooDate)
Run Code Online (Sandbox Code Playgroud)

这正确地显示了我想要它的日期,例如 09-Nov-2011

我收到的问题发生在我按提交时.它一直告诉我日期无效....这是有效的,你这个蠢事!

有什么办法,我可以得到jquery/unobtrusive javascript忽略这个字段或允许这种格式通过?到目前为止,我可以让表单工作的唯一方法是,如果我不格式化日期,或使用{0:d}作为日期格式.

编辑:我已经创建了一个完全独立的布局+视图+控制器+模型来测试这个愚蠢的东西.仍然无法在IE/Safari中运行.我有来自nuget的最新jquery.validate/unobtrusive文件.

layout是空的.它只是加载以下文件:

"jquery-1.7.min.js"
"jquery-ui-1.8.16.min.js"
"jquery.validate.min.js"
"jquery.validate.unobtrusive.min.js"
Run Code Online (Sandbox Code Playgroud)

我的TestViewModel很简单:

public class TestViewModel
{
    [Display(Name = "Test Date:")]
    [DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? TestDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的TestController如下:

public class TestController : Controller
{
    public ActionResult Index()
    {
        var m = new TestViewModel();
        m.TestDate = DateTime.Now;
        return View(m);
    } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc datepicker jquery-validate unobtrusive-validation asp.net-mvc-3

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

TextBoxFor - 显示错误的值

好的,我在这里有一个奇怪的.我知道值正确地传递给属性,因为这工作正常:

@Html.TextBox("Foo", Model.Foo, new { @class = "bar" })
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

@Html.TextBoxFor(m => m.Foo, new { @class = "bar" })
Run Code Online (Sandbox Code Playgroud)

它显示的值不正确.我完全不知道这个价值来自哪里.对于某些页面,它显示应该是的小写版本,有时则显示旁边的文本框的值.我很困惑.它是唯一能够做到这一点的文本框.我还在页面上有一个剃刀助手,它使用这个确切的值来显示页面的标题,并且显示正确.

我不介意使用@Html.TextBox()这个特别的,但我想深究这一点.

其他任何人都有这样的随机发生吗?我在这个特定的页面上有很多控件,这是唯一一个这样的控件.

c# razor asp.net-mvc-3

6
推荐指数
1
解决办法
1370
查看次数

枚举和字符串匹配

我本质上是想读取一个xml文件.其中一个值具有后缀,例如" 30d".这意味着'30天'.所以我试图将其转换为DateTime.Now.AddDays(30).要在XML中读取此字段,我决定使用枚举:

enum DurationType { Min = "m", Hours = "h", Days = "d" }
Run Code Online (Sandbox Code Playgroud)

现在我不确定如何有效地处理这个问题(当涉及枚举时我有点愚蠢).我应该首先将字符串中的后缀(在本例中为"d")分开,然后在enum使用switch语句中尝试匹配它吗?

我想如果你哑巴了我的问题,这将会是:什么是从,以获得最佳的方式30d,来DateTime.Now.AddDays(30)

c# enums

6
推荐指数
2
解决办法
1088
查看次数

范围:本地与Var

我是CF的新手,所以这可能是一个基本问题.但是我听说我应该在函数内部使用local作为CF中的作用域.但是'var'怎么样?var与使用本地相同吗?

例如

function MyFunction()
{
    local.obj = {};
}
Run Code Online (Sandbox Code Playgroud)

这是一样的:

function MyFunction()
{
    var obj = {};
}
Run Code Online (Sandbox Code Playgroud)

如果它们不一样,它们之间有什么区别?我什么时候应该使用它们中的任何一个?

coldfusion scope coldfusion-9

6
推荐指数
2
解决办法
4197
查看次数

更正错误后ValidationSummary是否仍然可见?

我有一个非常好的ValidationSummary,虽然在最后一个表单错误得到纠正后它不会消失.

我不确定这是默认行为还是错误.它似乎更倾向于后者,因为它们在我的表格提交后不会消失.

我唯一怀疑可能影响功能的是表单是通过创建的Ajax.BeginForm().

即使如此,不应该在ValidationSummary消失,为我打提交按钮?

forms validation asp.net-mvc

5
推荐指数
1
解决办法
3928
查看次数

LINQ - 获取总查询结果时间

我想知道是否有可能获得查询'搜索结果'的时间?就像谷歌每次查询都有时间一样 - 这是完成搜索所花费的时间.

这怎么可以实现?我没有尝试任何东西(因此没有代码)因为,我不知道从哪里开始.

LINQPad内置了这个功能,但是我想在我正在研究的内部mvc应用程序上获得类似内容.

谢谢

c# linq

4
推荐指数
1
解决办法
2045
查看次数