小编ili*_*ian的帖子

外部配置文件与elmah

我正在使用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文件肯定存在,但有些事情并不快乐.

可能是什么导致了这个?

elmah web-config configsource

25
推荐指数
1
解决办法
4117
查看次数

正则表达式值得麻烦吗?

令我感到震惊的是,大多数开发人员都不能很好地理解正则表达式.这也让我觉得,对于很多问题,其中使用正则表达式,代码一次性可以用来代替.当然,对于像电子邮件验证这样的东西,它可能会更慢并且是20行,但如果代码的性能不是非常重要,那么假设不使用正则表达式可能是更好的做法是否合理?

我在考虑维护代码而不是直线执行时间.

regex language-agnostic

23
推荐指数
7
解决办法
3412
查看次数

如何使用jquery在表中查找行的索引

我正在尝试在表中找到行的索引.我正在尝试使用以下代码,但我似乎得到-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)

谢谢

jquery

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

在扩展方法中使用IoC

我正在开发一个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.也许我只是以一种非常愚蠢的方式来解决这个问题.

structuremap asp.net-mvc ioc-container

20
推荐指数
3
解决办法
5265
查看次数

ModelBinding与Steve Sandersons的BeginCollectionItem

我正在使用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)

c# asp.net-mvc model-binding asp.net-mvc-4

18
推荐指数
1
解决办法
670
查看次数

如何将转发器绑定到List <Person>以更新绑定的项目?(2种方法)

如果我有一个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)

asp.net data-binding repeater

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

如何在缺少内容文件时使MSBuild失败

我注意到,当内容文件丢失时,我们的巡航控制服务器不会使构建失败.

当javascript /图形文件等缺失时,我想失败.如何使用从svn中提取的文件验证项目文件?

cruisecontrol.net msbuild visual-studio-2008

15
推荐指数
1
解决办法
2500
查看次数

使用Moq可以验证匿名类型的方法调用吗?

我正在尝试使用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发布的代码运行良好,但是,一旦代码和测试在不同的程序集中,测试就会失败.

moq

15
推荐指数
3
解决办法
3016
查看次数

使CSS页脚位于浏览器窗口的底部或内容的底部

这个问题重复一遍.

我有一个现有的网站(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,它将页脚放在窗口的底部,但如果窗口的内容较大,则页脚覆盖内容.

我该怎么解决这个问题?

css

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

如何在configSource和属性中使用mailSettings\smtp?

我正在尝试清理我们的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 web-config

14
推荐指数
1
解决办法
3919
查看次数