我正在使用elmah(v1.1.11517.0)并尝试将配置移动到外部源.
我的配置目前看起来像这样:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
<section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net configSource="Settings\RobDev\log4net.config" />
<elmah configSource="Settings\RobDev\ELMAH.config" />
</configuration>
Run Code Online (Sandbox Code Playgroud)
log4net很高兴并且运行良好,但是对于elmah我得到了错误
Parser Error Message: The attribute 'configSource' cannot be specified because its name starts with the reserved prefix 'config' or 'lock'.
Run Code Online (Sandbox Code Playgroud)
这是一种痛苦,elmah文件肯定存在,但有些事情并不快乐.
可能是什么导致了这个?
令我感到震惊的是,大多数开发人员都不能很好地理解正则表达式.这也让我觉得,对于很多问题,其中使用正则表达式,代码一次性可以用来代替.当然,对于像电子邮件验证这样的东西,它可能会更慢并且是20行,但如果代码的性能不是非常重要,那么假设不使用正则表达式可能是更好的做法是否合理?
我在考虑维护代码而不是直线执行时间.
我正在尝试在表中找到行的索引.我正在尝试使用以下代码,但我似乎得到-1的索引.
$(document).ready(function()
{
$("tr").click(function (){
var index = $("table").index($(this));
$("span").text("That was row index #" + index);
});
});
Run Code Online (Sandbox Code Playgroud)
用html看起来像这样;
<table>
<tbody>
<tr><td>click</td></tr>
<tr><td>click</td></tr>
<tr><td>click</td></tr>
<tr><td>click</td></tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在开发一个ASP MVC 3应用程序,我正在编写一个自定义的html助手.它没有什么特别之处或非常复杂,但它需要一个来自结构图的接口实例.我知道我可以简单地从方法内部调用structuremaps的对象工厂,但由于应用程序的其余部分使用IoC而不是服务位置,我希望保持这种方式.
有没有办法从内部和asp net mvc app注入扩展方法的接口?
UPDATE
我正在做的一个例子可能会有所帮助:
public static class ShowUrl
{
public static string ForShow(this UrlHelper url, int showId)
{
var service = ObjectFactory.GetInstance<IPerformanceService>();
var showName = service.GetPerformanceTitle(showId);
return url.Action(MVC.Performance.Details(showId, showName.ToFriendlyUrl()));
}
}
Run Code Online (Sandbox Code Playgroud)
使用方式如下:
<a href='<%= Url.ForShow(1)%>'>
Run Code Online (Sandbox Code Playgroud)
基本上我正在尝试使用来自实体ID的slug构建一个URL.也许我只是以一种非常愚蠢的方式来解决这个问题.
我正在使用Steve Sandersons BeginCollectionItem扩展来帮助绑定项目列表.这适用于原始类型.我遇到的问题是,对于我编写的自定义模型绑定器,我无法看到如何生成我绑定的项目的全名和索引.
目前我的模型绑定器如下所示:
public class MoneyModelBinder : DefaultModelBinder
{
protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Amount");
if (valueResult != null)
{
var value = valueResult.AttemptedValue;
var currencyCode = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Iso3LetterCode").AttemptedValue;
var money = (Money) bindingContext.Model;
Money parsedValue;
if (String.IsNullOrEmpty(value))
{
money.Amount = null;
return;
}
var currency = Currency.FromIso3LetterCode(currencyCode);
if (!Money.TryParse(value, currency, out parsedValue))
{
bindingContext.ModelState.AddModelError("Amount", string.Format("Unable to parse {0} as money", value));
}
else
{
money.Amount = parsedValue.Amount;
money.Currency …Run Code Online (Sandbox Code Playgroud) 如果我有一个List <Person>,其中person由类定义
class Person
{
string Forename
{
get;set;
}
string Surname
{
get; set;
}
}
Run Code Online (Sandbox Code Playgroud)
我将它绑定到一个asp转发器控件,看起来像这样:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="lblForename" runat="server" Text="Forname" AssociatedControlID="txtForename" />
<asp:TextBox ID="txtForename" runat="server" Text='<%# ((Person)Container.DataItem).Forename %>' />
<br />
<asp:Label ID="lblSurname" runat="server" Text="Forname" AssociatedControlID="txtSurname" />
<asp:TextBox ID="txtSurname" runat="server" Text='<%# ((Person)Container.DataItem).Surname %>' />
<br />
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
获取用户输入的数据到对象中的最佳方法是什么?
我认为数据绑定的重点在于有效地处理了这个问题,但是当我检查Repeater1.Items集合时,没有进行任何更改.我是否必须编写代码来执行某些操作
//This is only intended to be pseudo code
for each item in Repeater1.Items
((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,为什么DataItem属性总是为空?
附加信息:
我已经在调用代码的效果了
this.Repeater1.DataSource = this.PersonList; …Run Code Online (Sandbox Code Playgroud) 我注意到,当内容文件丢失时,我们的巡航控制服务器不会使构建失败.
当javascript /图形文件等缺失时,我想失败.如何使用从svn中提取的文件验证项目文件?
我正在尝试使用Moq验证方法调用,但我无法正确地获得语法.目前我已将此作为我的验证:
repository.Verify(x => x.ExecuteNonQuery("fav_AddFavorites", new
{
fid = 123,
inputStr = "000456"
}), Times.Once());
Run Code Online (Sandbox Code Playgroud)
代码编译,但测试失败并出现错误:
Expected invocation on the mock once, but was 0 times:
x => x.ExecuteNonQuery("fav_AddFavorites", new <>f__AnonymousType0<Int32, String>(123, "000456"))
No setups configured.
Performed invocations:
IRepository.ExecuteNonQuery("fav_AddFavorites", { fid = 123, inputStr = 000456 })
Run Code Online (Sandbox Code Playgroud)
如何验证方法调用并匹配匿名类型的方法参数.
UPDATE
回答问题:
我试图验证方法被调用和参数是否正确.
我试图验证的方法的签名是:
int ExecuteNonQuery(string query, object param = null);
Run Code Online (Sandbox Code Playgroud)
设置代码很简单:
repository = new Mock<IRepository>();
Run Code Online (Sandbox Code Playgroud)
更新2
看起来这是Moq的一个问题,以及它如何处理.Net中的匿名类型.Paul Matovich发布的代码运行良好,但是,一旦代码和测试在不同的程序集中,测试就会失败.
这个问题重复一遍.
我有一个现有的网站(jacquelinewhite.co.uk),上面有一个页脚.目前,此页脚始终位于主要内容的下方.我试图让它浮动到浏览器窗口的底部,或者如果内容大于窗口,请保持在内容的底部.
实际上,HTML的结构如下:
<div id="container">
<div id="top_bar">
</div>
<div id="header">
</div>
<div id="left_menu">
</div>
<div id="right_content">
</div>
<div class="clear">
</div>
<!-- FOOTER AREA -->
<div id="footer">
</div>
<!-- END FOOTER AREA -->
</div>
Run Code Online (Sandbox Code Playgroud)
我尝试了绝对位置,底部0,它将页脚放在窗口的底部,但如果窗口的内容较大,则页脚覆盖内容.
我该怎么解决这个问题?
我正在尝试清理我们的web.config文件,以便每个部署特定的东西不会保存在主配置中.我已经管理了连接字符串和一些mailSettings,但我需要from属性以及configSource,但这似乎是不允许的.
目前我有这个:
web.config中:
<system.net>
<mailSettings >
<smtp configSource="email.config" from="me@blahblah.com" />
</mailSettings>
<defaultProxy>
<proxy bypassonlocal="True" usesystemdefault="False" />
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
email.config
<network host="myhost" password="" userName="" />
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会设置configSourceon mailSettings或者system.net,但是不支持.
有一个更好的方法吗?
asp.net ×2
asp.net-mvc ×2
web-config ×2
c# ×1
configsource ×1
css ×1
data-binding ×1
elmah ×1
jquery ×1
moq ×1
msbuild ×1
regex ×1
repeater ×1
structuremap ×1