小编Eri*_*sch的帖子

奇怪的.NET正则表达式问题

给定以下RegEx表达式,在regexlib.com上使用字符串"2rocks"进行测试会产生"匹配".但是,在我的.NET应用程序中,它导致正则表达式验证程序抛出验证错误.

^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$
Run Code Online (Sandbox Code Playgroud)

如果我在我的应用程序和regexlib.com中将字符串更改为"rocks2",我会在两个地方都匹配.

目标是有一个正则表达式,要求字符串长度在6-32个字符之间,并允许AZ,az,数字和正则表达式中包含的其他特殊字符,强制至少一个字母.

这是ASP标记,我完全糊涂了.

<asp:regularexpressionvalidator 
    id=vldRegEx_LoginID 
    runat="server" 
    ErrorMessage="Regex Error Message" 
    Display="Dynamic" 
    ControlToValidate="txtLoginID" 
    ValidationExpression="^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$">
        <img src="images/error.gif" border="0">
 </asp:regularexpressionvalidator>
Run Code Online (Sandbox Code Playgroud)

.net regex validation

0
推荐指数
1
解决办法
188
查看次数

如何重构迭代器的使用

我有一些代码我想重构使用C#迭代器(即IEnumerable).不幸的是,我无法找到最好的方法来允许其他函数使用迭代器而不会导致它重新启动迭代器.

例如:

NewLineEnumerator nle = new NewLineEnumerator();

while (bytesRead > 0)
{
  var nlenum = nle.Process(inputData, bytesRead);
  foreach (string block in nlenum)
  {
    DoSomething(nlenum);
  }
}

void DoSomething(IEnumerable<string> myiter)
{
  foreach (var s in myiter)
  {
     // myiter is restarted, and begins at the start of the iterator again
  }
}
Run Code Online (Sandbox Code Playgroud)

你可能会问我为什么要这样做.原因是我有一个数据流,被"命令块"包围.根据命令,我将其发送到另一个子功能进行处理.所以我想在开始时或结束时继续迭代我在流中停留的位置.

这里有什么建议?

c# refactoring iterator

0
推荐指数
1
解决办法
164
查看次数

没有控制上下文的回发

我有一种情况,我想使用几个服务器端控件,它们具有客户端状态.我想检查事件发生时的状态(如各种点击),当状态是我想要的时候,我想回发到服务器并进行一些处理.

特别是,我需要确保在我想要回发之前至少有3个不同的控件有选择.由于没有特定的控件可以启动回发,我只想捕获客户端的选择事件,然后调用__doPostBack()(或类似的东西)来启动处理.所以我已经禁用了所有服务器端事件,关闭了autopostback,并连接了一些javascript来处理这个问题.

我已经编写了所有客户端代码并且正在工作,但是我似乎无法让服务器端识别回发.我重写了RaisePostBackEvent,并检查了eventArgument以获取我的自定义参数.这不起作用,因为从不调用RaisePostBackEvent.

启用自动后备功能时,此方法有效(例如,Telerik Radgrid OnSelectChanged服务器端事件).

有关处理此问题的最佳方法的任何建议吗?

更新:

当被问到示例代码时,就像我上面说的那样.不是火箭科学.

使用Javascript:

function CheckState(source, eventArgs) {
    // logic to test state of controls
    __doPostBack("", "DoMyWork:");
}
Run Code Online (Sandbox Code Playgroud)

然后在代码后面我有:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    if (eventArgument.IndexOf("DoMyWork") != -1)
    {
        // do my server side work.
    }
}
Run Code Online (Sandbox Code Playgroud)

解析度:

因为这有点让人困惑.我只想说明我的解决方案是什么.

我使用了回发中涉及的其中一个控件,并使用它的唯一ID作为控件参数,然后将我的方法用作事件.

javascript asp.net postback

0
推荐指数
1
解决办法
2385
查看次数

使用WithConstructorArgument并创建绑定类型

我有一个看起来像这样的绑定:

kernel.Bind<IRepository<Holiday>>().To<RepositoryBase<Holiday>>();
Run Code Online (Sandbox Code Playgroud)

问题是RepositoryBase采用了一个名为context的UnitOfWork的构造函数参数.这不是,本身就是一个问题.Ninject应该解决它.除了我有两个UnitOfWork实现的事实,两个都使用属性鉴别器绑定.

kernel.Bind<IUnitOfWork>().To<MS_DevEntities>().WhenTargetHas<MsDataAttribute>()
    .InRequestScope();
Run Code Online (Sandbox Code Playgroud)

如何指定在创建IRepository时,应该使用MS_DevEntities创建?

当然,我可以这样做:

kernel.Bind<IRepository<Holiday>>().To<RepositoryBase<Holiday>>()
    .WithConstructorArgument("context", new MS_DevEntities());
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿让Ninject创建实例,特别是因为我正在使用.InRequestScope()生命周期.

有什么建议?

编辑:

以前,我使用的是如下所示的类:

public class HolidayRepository : RepositoryBase<Holiday>, IHolidayRepository
{
    public HolidayRepository([MsData]IUnitOfWork context) : base(context){}
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在发现自己有几十个,但是当我需要创建一个新的存储库时,它们并没有做太多工作,而是增加了额外的工作.我想直接在绑定中映射这些.

EDIT2:

我想我可以做这样的事情,但看起来有点像黑客.有没有更好的办法?

kernel.Bind<MS_DevEntities>().ToSelf().InRequestScope();
kernel.Bind<IRepository<Holiday>>().To<RepositoryBase<Holiday>>()
    .WithConstructorArgument("context", 
        (context) => context.Kernel.Get<MS_DevEntities>());
Run Code Online (Sandbox Code Playgroud)

ninject ninject-2

0
推荐指数
1
解决办法
2252
查看次数

如何在mvc中获取当前路由ID

我在mvc的一个项目工作.

我尝试做的是获取路由的当前id以在uploadhandler方法中使用它以将此值插入到我的数据库中:

是否可以在mvc中的ashx文件中获取当前路由ID?

我经常搜索并看到一些答案: ViewContext.RouteData.Values["id"];

我想做的是:

cmd.Parameters.Add("@Ident", SqlDbType.Int).Value = /*HERE write a line to get the current id*/;
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

0
推荐指数
1
解决办法
7893
查看次数

jQueryUI IE8对象不支持此属性或方法

我正面临一个问题,我正在使用jquery.ui.richmedia.js.

"对象不支持此属性或方法"此错误正在发生

"toremoveTabs [i] .hide()"只是这行代码.我相信它与hide()方法有关,因为"toremoveTabs [i]"在代码中的其他地方工作正常.代码工作正常Mozilla和Chrome.

       resetTabs:function () {
        // remove unavailable tabs.
        var toremoveTabs = [];
        var toremoveTabNames = [];
        this._forEachTab(function (tab, i, self) {
            if (self._tabs) {
                tab = $(tab);
                var tabName = self._getTabName(tab.attr('content_id')).toLowerCase();
                if (!(tabName in self._tabs)) {
                    toremoveTabs[i] = tab;
                    toremoveTabNames[i] = tabName;
                }
            }
        });
        this._appendTabs = null;
        this._appendTabs = {};
        for (var i in toremoveTabs) {
            this._appendTabs[i] = [toremoveTabNames[i], toremoveTabs[i]];
            toremoveTabs[i].hide();
        }
    } 
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议解决方案/解决方案?

javascript internet-explorer jquery-ui internet-explorer-8

0
推荐指数
1
解决办法
1347
查看次数

如何将system.linq.IQueryable <int?>转换为int?[]

foreach (var app in allList)
{
    int?[] ids = Context.tblTransactionDetails
        .Where(x => x.IsActive == true)
        .Select(x => x.AdvertID);
}
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

0
推荐指数
1
解决办法
2811
查看次数

在mvc中实时插入数据

我有一个带评论功能的新闻项目.任何添加评论的人都可以在不重新加载页面的情况下立即查看他的评论(使用ajax).问题是当user1(例如)对post1发表评论时,只有user1可以立即看到他的评论,但所有其他用户需要重新加载页面才能看到user1的评论.我怎么解决这个问题 ?

我用来获取评论的代码:

$(function () {
  $("#AddComment").click(function () {

  var CommentText = document.getElementById("CommetForm").innerHTML;
    var UserName = document.getElementById("UserName").innerHTML;
    var PostId = document.getElementById("PostId").innerHTML;


       $.ajax({
                url: '/PostComment/AddComment',
                type: 'POST',
                dataType: 'json',
                cache: false,
                data: { "PostId": PostId, "CommentText": OrignalCommentText },
                success: function (data)
                {
                    if (data == "P") // Commet Stored on database successfully
                    {
                    document.getElementById("PostComments-" + PostId).innerHTML += 
                    "<li>" +
                                    "<div class='media'>" +
                                        "<div class='media-body'>" +
                                            "<a href='' class='comment-author'>"+UserName+"</a>" +
                                            "<span class='CommetText' id='CommentText-" + PostId + "'>" + CommentText + "</span>" + …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc jquery real-time

0
推荐指数
1
解决办法
983
查看次数