这是一个相对直截了当的问题.但我想知道通过使用接口访问单独项目中的方法的正确用法是什么.
项目: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
?
这是一个好奇的问题,你们都知道:
使用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) 我正在试图找出如何以及在何处加载数据(即我的动作上的调用调度)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) 我想就此提出一些专家建议.我之前使用过编译查询,但对于这种特殊情况,我不确定它是否合适.
它是一个搜索表单,其中查询更改并依赖于正在搜索的内容.
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 SQL的ASP.NET网站中使用上述内容.不确定这是否有所不同.
谢谢
我有一个日期字段(我使用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
好的,我在这里有一个奇怪的.我知道值正确地传递给属性,因为这工作正常:
@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()
这个特别的,但我想深究这一点.
其他任何人都有这样的随机发生吗?我在这个特定的页面上有很多控件,这是唯一一个这样的控件.
我本质上是想读取一个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)
?
我是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)
如果它们不一样,它们之间有什么区别?我什么时候应该使用它们中的任何一个?
我有一个非常好的ValidationSummary,虽然在最后一个表单错误得到纠正后它不会消失.
我不确定这是默认行为还是错误.它似乎更倾向于后者,因为它们在我的表格提交后不会消失.
我唯一怀疑可能影响功能的是表单是通过创建的Ajax.BeginForm()
.
即使如此,不应该在ValidationSummary消失,右为我打提交按钮?
我想知道是否有可能获得查询'搜索结果'的时间?就像谷歌每次查询都有时间一样 - 这是完成搜索所花费的时间.
这怎么可以实现?我没有尝试任何东西(因此没有代码)因为,我不知道从哪里开始.
LINQPad内置了这个功能,但是我想在我正在研究的内部mvc应用程序上获得类似内容.
谢谢
c# ×6
linq ×3
asp.net-mvc ×2
.net ×1
c#-4.0 ×1
coldfusion ×1
coldfusion-9 ×1
datepicker ×1
enums ×1
forms ×1
func ×1
interface ×1
linq-to-sql ×1
razor ×1
react-redux ×1
reactjs ×1
redux ×1
redux-thunk ×1
scope ×1
validation ×1