我正在开发一个项目,目前正在使用log4j实现一些日志记录,我很好奇我应该如何实现日志.我正在讨论的两个实现如下:
第一选择
对于该类和所有子类,使用来自超类的单个日志:
public abstract class AbstractFoo {
protected static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
public void someMethod() {
LOG.info("Using abstract log");
}
}
Run Code Online (Sandbox Code Playgroud)
第二选择
为每个类,super和subs使用单独的日志:
public abstract class AbstractFoo {
private static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
private static Log LOG = LogFactory.getLog(Foo.class);
public void someMethod() {
LOG.info("Using own log");
}
}
Run Code Online (Sandbox Code Playgroud)
什么更有意义,为什么?
我正在开发一个敏捷的MVC3项目,它开始变得相当大,特别是我的管理部分,用户可以设置很多配置等.这是我的第一个MVC3项目,所以我很好奇它什么时候使用区域有意义吗?
在决定将其分解为某个区域并为各个管理操作创建控制器之前,像管理这样的特定部分的控制器应该有多大?
此外,在使用区域时,我是否应该重构使用区域的所有内容,或仅针对需要区域的区域?
我最近一直在MVC工作,我很好奇初始化我的视图模型的最佳方法是什么.我应该直接在控制器中映射它,还是应该在视图模型的构造函数中初始化属性.此外,当有列表时,这是更好的做法,因为当出现验证错误时,您不必重新填充它们.
例如,如果我有以下型号:
public FooBarViewModel
{
public int FooBarId { get; set; }
public string SomeInitialProperty1 { get; set; }
public string SomeInitialProperty2 { get; set; }
public string SomeInitialProperty3 { get; set; }
public string SomeInitialProperty4 { get; set; }
public int FooId { get; set; }
public int BarId { get; set; }
public IEnumerable<Foo> Foos { get; set; }
public IEnumerable<Bar> Bars { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后是控制器:
public MyController : Controller
{
[HttpGet]
public ActionResult FooBar(int foobarId) …
Run Code Online (Sandbox Code Playgroud) 我试图让模型绑定MVC3和JSON工作,但我没有运气...无论我做什么,我似乎null
在服务器上得到一个模型.
方法签名:
public ActionResult FilterReports(DealSummaryComparisonViewModel model)
Run Code Online (Sandbox Code Playgroud)
Javascript 更新:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#filter-reports').click(filterReports);
});
function filterReports() {
var filters = {
SelectedRtoId: $('#SelectedRtoId').val(),
SelectedPricingPointId: $('#SelectedPricingPointId').val(),
SelectedLoadTypeId: $('#SelectedLoadTypeId').val(),
SelectedBlockId: $('#SelectedBlockId').val(),
SelectedRevisionStatusId: $('#SelectedRevisionStatusId').val()
}
var dealSummaries = { SelectedItemIds: $('#SelectedItemIds').val() }
var model = { ReportingFilters: filters, DealSummaries: dealSummaries }
$('#selected-items select option').attr("selected", "selected");
$.ajax({
url: '@Url.Action("FilterReports")',
data: model,
contentType: 'application/json',
dataType: 'json',
success: function (data) {
alert(data);
}
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
楷模:
public class DealSummaryComparisonViewModel
{ …
Run Code Online (Sandbox Code Playgroud) 我正在使用第三方数据库,需要为我正在研究的特定市场选择一组不同的数据.每个市场的数据都是相同的,因此将其全部用完是多余的,我不想硬编码任何逻辑,因为我们正在与供应商合作解决问题,但我们需要修复与供应商一起修复以及数据库当前的方式,因为它可能需要一段时间才能实现.
我不想按任何方式进行分组,因为我想在最低级别获取数据,但我不想要任何冗余数据.我当前的查询看起来与此类似...
determinantData = (from x in dbContext.Datas
where x.Bar.Name.Equals(barName) &&
x.Something.Name.Equals(someName) &&
FooIds.Contains(x.Foo.Id) &&
x.Date >= startDate &&
x.Date <= endDate
select x).Distinct();
Run Code Online (Sandbox Code Playgroud)
这不符合我的预期.我想通过三个属性来选择不同的记录,也就是说Foo
,Bar
和Something
而返回整个对象.我怎么能用LINQ做到这一点?
我有一个下拉列表,我希望它是可选的,但是,ModelState.IsValid
检查是试图验证属性.有没有办法告诉它该属性是可选的?
这是我的代码:
<h2>New Version</h2>
@using (Html.BeginForm()) {
<div>Version Number: @Html.TextBoxFor(m => m.Number)</div>
<div>Enabled: @Html.CheckBoxFor(m => m.IsActive)</div>
<div></div>
<div>
Template (optional):
@Html.DropDownListFor(m => m.TemplateVersionId, new SelectList(Model.CurrentVersions, "VersionId", "Number"),
"-- Select Template --")
</div>
<input type="submit" value="Save" />
@Html.ActionLink("Cancel", "Index");
}
Run Code Online (Sandbox Code Playgroud)
和我的ViewModel:
public class AddVersionViewModel
{
public double Number { get; set; }
public bool IsActive { get; set; }
public int TemplateVersionId { get; set; }
public ICollection<Version> CurrentVersions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望它TemplateVersionId
是可选的.
我有一个列表框,它有两个按钮来控制所包含项目的优先级.除了选择多个项目时向下移动逻辑外,一切正常.
如果选择了两个项目,则不会发生任何事情,如果选择了三个或更多项目,则只有底部项目移动..是否有一种使用jQuery处理此问题的简单方法?
目前的实施:
<div id="selected">
<div><strong>Selected</strong></div>
<div id="selected-items">
<input type="select" multiple="multiple" id="selected-items-select">
<option/>
</input>
</div>
</div>
<div id="priority" style="display: none;">
<div><input type="button" id="move-up" value="^" /></div>
<div><input type="button" id="move-down" value="v" /></div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#move-up').click(moveUp);
$('#move-down').click(moveDown);
});
function moveUp() {
$('#selected-items select :selected').each(function (i, selected) {
$(this).insertBefore($(this).prev());
});
$('#selected-items select').focus().blur();
}
function moveDown() {
$('#selected-items select :selected').each(function (i, selected) {
$(this).insertAfter($(this).next());
});
$('#selected-items select').focus().blur();
}
</script>
Run Code Online (Sandbox Code Playgroud)
另外,请注意该$('#selected-items select').focus().blur();
行..我有它,因为有时优先级不会更新,直到列表框获得焦点.还有更清洁的方法吗?
我有一个运行 Windows 服务Excel Interop
以自动执行各种宏。但是,当我尝试运行使用 Windows 身份验证访问数据库的宏时,我遇到了一个奇怪的问题......
如果宏通过 Windows 服务运行,则打开工作簿并启动宏执行但应用程序挂起(大概在数据访问部分)。
但是,如果宏通过 Visual Studio 调试器运行,使用与服务相同的实现(它们调用相同的类库),它会执行,保存工作簿,并按预期关闭。
我确定这与模拟有关,但我似乎无法弄清楚。我在我的用户下运行了 Windows 服务,我还修改了组件服务中的默认 COM 属性,Impersonate
而不是默认的Identify
.
任何帮助将不胜感激,因为最好作为 Windows 服务而不是控制台应用程序运行。
我有一个包含以下结构的表的视图:
<table id="mappings">
<thead>
<tr>
<th width="40%"><input type="checkbox" id="cb-master" /> Structure</th>
<th width="15%">Excel Column</th>
<th width="15%">Excel Row Start</th>
<th width="15%">Excel Row End</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" id="cb-1" value="1" /> Item 1</td>
<td><input type="text" id="col-1" value="A" /></td>
<td><input type="text" id="rstart-1" value="5" /></td>
<td><input type="text" id="rend-1" value="20" /></td>
</tr>
<tr>
<td><input type="checkbox" id="cb-2" value="2" /> Item 2</td>
<td><input type="text" id="col-2" value="B" /></td>
<td><input type="text" id="rstart-2" value="5" /></td>
<td><input type="text" id="rend-2" value="20" /></td>
</tr>
.
.
.
<tr>
<td><input type="checkbox" id="cb-n" …
Run Code Online (Sandbox Code Playgroud) 我一直在努力在.NET 4.0中设置WCF REST服务.我有GET请求工作,但任何涉及POST数据到服务器的请求都失败了HTTP 400 Bad Request
.
这是我的简单服务:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1
{
[WebGet(UriTemplate = "")]
public string HelloWorld()
{
return "hello world";
}
[WebInvoke(UriTemplate = "", Method = "POST")]
public string HelloWorldPost(string name)
{
return "hello " + name;
}
}
Run Code Online (Sandbox Code Playgroud)
我的Web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<protocolMapping>
<add scheme="http" binding="webHttpBinding" /> …
Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net ×4
jquery ×3
.net ×2
asp.net-mvc ×2
excel ×1
http ×1
http-post ×1
http-put ×1
inheritance ×1
java ×1
javascript ×1
json ×1
linq ×1
linq-to-sql ×1
logging ×1