小编Ric*_*ard的帖子

asp.net mvc3 jquery ui对话框和客户端验证

我在asp.net mvc3应用程序中遇到客户端验证问题.

我的代码看起来:

function loadEditCategoryDialog(categoryId) {
    $.ajax({
        url : "/rovastamp3/Admin/CategoryEditDialog",
        data : "categoryId="+categoryId,
        success : function(data){
            $("#popup_dialog").html(data);
            $("#popup_dialog").dialog({        
                modal: true,
                draggable: false,
                resizable: false,
                title: "Upravit kategorii",
                width: 600,
                height: 500,
            });                             
        }
    });
 }
Run Code Online (Sandbox Code Playgroud)

控制器:

[HttpGet]
public ActionResult CategoryEditDialog(int categoryId)
{
    CategoryEditViewModel categoryEditViewModel = new CategoryEditViewModel();
    categoryEditViewModel.Category = _postAuctionCategoryRepo.Query()
        .SingleOrDefault(x => x.Id == categoryId);

    return PartialView(categoryEditViewModel);
}

[HttpPost]
public ActionResult CreateNewCategory(CategoryEditViewModel categoryEditViewModel)
{
    if (ModelState.IsValid)
    {
        return RedirectToAction("Index");
    }
    return View("CategoryEditDialog", categoryEditViewModel);
}
Run Code Online (Sandbox Code Playgroud)

最后我的部分观点是:

@model Rovastamp.MVC3.ViewModels.AdminController.CategoryEditViewModel
<h2>Upravit kategorii @Model.Category.Name</h2> …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc dialog jquery-ui

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

Web API中的Per-Request DependencyResolver

在MVC中,ModelValidatorProvider实例化并调用a以在每个请求上验证模型.这意味着在DI环境中,它可以依赖于单个请求中作用域的对象,例如工作单元或数据库上下文.在Web API中,这似乎已经发生了重大变化.而不是按请求实例化,ModelValidatorProvider似乎是在应用程序启动期间长期存在并实例化的.然后,WebAPI缓存来自ModelValidatorProviderper类型的结果,这意味着ModelValidator不能从DI中获取任何依赖性.

我正在尝试ModelValidator使用服务定位器实现我使用工厂(请不要自动'反模式'注释!).这将允许我在每个请求中构造一个内部验证器对象,它可以从容器中获取依赖关系.但是,我无法获得一个依赖性解析器或容器作为当前请求的范围,该请求ModelValidator主要是作为Singleton的范围.我试过使用GlobalConfiguration.Configuration.DependencyResolver,但这只返回全局范围的服务(从根范围,这里提到)

我在Autofac工作,因此特定于autofac的解决方案是合适的(例如MVC具有AutofacDependencyResolver.Current,内部使用DependencyResolver.GetService).WebAPI集成中没有可用的等价物,可能是因为上面提到的全局DependencyResolver仅返回全局范围服务的原因.

我尝试这样做(以及我自己使用)的原因是为FluentValidation实现Web API集成,目前不存在.到目前为止已经进行了两次尝试,但这些尝试都没有处理依赖注入问题,而是导致单个静态ModelValidator.

到目前为止我尝试过的事情:

  • 使用GlobalConfiguration.Configuration.DependencyResolver(返回根作用域中的对象)
  • 依赖于Func<IComponentContext>(总是返回根上下文)

在已删除的答案中,建议IModelValidatorProvider从Web API配置中删除服务.这必须使用反射来完成,因为接口和实现类都被定义为内部,但它确实使验证器更好地工作(因为ModelValidator是按请求构造的).但是,由于使用反射来检查模型上的验证器及其具有的每个属性,因此以这种方式执行它会有显着的性能损失,因此我不想采用此选项.

Filip W的回答建议使用HttpRequestMessage获取依赖范围,但是我没有找到任何HttpRequestMessage.Current可以在长期存在的对象中提供对该对象的访问的东西- 如果可以实现,我相信一切都会落到实处.

autofac fluentvalidation asp.net-web-api

8
推荐指数
1
解决办法
6444
查看次数

YouTube和Google如何访问彼此的Cookie?

很多关于stackoverflow的研究告诉我,从其他域获取/设置cookie是不可能的.

但我可以看到youtube.com正在通过google.com这样做 在此输入图像描述

那他们怎么样呢?

cookies http

8
推荐指数
1
解决办法
750
查看次数

在多对多链接表上有选择地禁用级联删除

是否可以在Entity Framework 5 Code First中自动生成的多对多链接表中有选择地删除Cascade Delete选项?这是一个需要它的简单示例:

public class Parent
{
    public int Id { get; set; }

    public virtual IList<ChildA> As { get; set; }
    public virtual IList<ChildB> Bs { get; set; }
}

public class ChildA
{
    public int Id { get; set; }
    [Required]
    public virtual Parent Parent { get; set; }

    public virtual IList<ChildB> ChildBJoins { get; set; }
}

public class ChildB
{
    public int Id { get; set; }
    [Required]
    public virtual Parent Parent { …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first entity-framework-5

7
推荐指数
1
解决办法
1528
查看次数

寻找一种干净的方法将字符串列表转换为C#中的有效List <long>

我希望找到一种更好的方法(可能有一个很好的linq表达式)将像"41,42x,43"这样的字符串列表转换为有效long的列表.下面的代码有效,但感觉很难看.

string addressBookEntryIds = "41,42x,43";
var ids = addressBookEntryIds.Split(new[] {',', ';'}, StringSplitOptions.RemoveEmptyEntries);
var addressBookEntryIdList =new List<long>();
foreach (var rec in ids)
{
    long val;
    if (Int64.TryParse(rec, out val))
    {
        addressBookEntryIdList.Add(val);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# c#-4.0

6
推荐指数
1
解决办法
954
查看次数

无法从“int”转换为“System.Predicate”

我收到此错误:无法从“int”转换为“System.Predicate ServerHomeWork.Models.Organization”

在 OrgList.Add(Organization.Find(UTO.OrganizationId); 行的一部分,属性 UTO.OrganizationId 是一个 int 但仍然表示出了问题。任何人都可以告诉我这里出了什么问题吗?

代码在这里:

public virtual List<Organisation> Organisation
{
    get
    {
        List<UsersToOrganisations> UserToOrg = UsersToOrganisations.FindListOfOrganisations(UserId);
        List<Organisation> OrgList = new List<Models.Organisation>();

        if (UserToOrg.Count > 0)
            foreach (UsersToOrganisations UTO in UserToOrg)
                OrgList.Add(Organisation.Find(UTO.OrganisationId));
        else
            OrgList.Add(new Organisation("No organisation was found.", 0));


        return OrgList;
    }
} 
Run Code Online (Sandbox Code Playgroud)

这是 UserToOrganization 类

class UsersToOrganisations
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public int OrganisationId { get; set; }
    public bool MainOrganisation { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

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

我怎么知道我的程序在单元测试环境下

我有一个控制台应用程序。在发布环境中,此时它可以完美运行。在 IDE 调试环境中,我不想关闭控制台窗口,所以我添加了这个函数,并在我的程序的最后调用它。

[Conditional("DEBUG")]
public static void DebugWaitAKey(string message = "Press any key")
{
    Console.WriteLine(message);
    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

当我调试程序时,它对我来说效果很好。但是通过单元测试,它在退出之前仍然等待一个键!

解决方法只是我的程序的单元测试发行版,或测试其他功能。但我确实想要一些可以识别当前会话正在进行单元测试的东西,并在这个函数中使用该标志。

.net c# console unit-testing visual-studio

5
推荐指数
1
解决办法
1586
查看次数

当违反测试超时时,NUnit会在内部执行什么操作?

NUnit遇到超时时究竟做了什么?我曾经认为它会通过抛出TimeoutException来中止测试,但是这个测试证明不是这样:

[Test, Timeout(100), ExpectedException(typeof(TimeoutException))]
public static void RaisingExpectedTimeoutException()
{
    Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,nunit控制台只报告违反超时,但不报告测试是如何中止的.是否有人知道这将如何工作?为什么上面的测试没有引起我预期的TimeoutException?(即使它是.NET异常类型,我认为NUnit使用Exception来处理超时违规).

PS:这个测试方法也失败了:

[Test, Timeout(100), ExpectedException(typeof(ThreadAbortException))]
public static void RaisingExpectedThreadAbortException()
{
    Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

并且这种测试方法成功("没有人期待西班牙的调查!"):

[Test, ExpectedException(typeof(ThreadAbortException))]
public static void ThrowingExpectedThreadAbortException()
{
    Thread.CurrentThread.Abort();
}
Run Code Online (Sandbox Code Playgroud)

c# nunit timeoutexception

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

从IOwinContext获取浏览器信息

如何从IOwinContext获取浏览器?

我试图在我的owin中间件(下面的代码)的响应中记录请求.

public async override Task Invoke(IOwinContext context)
{
    var sw = new Stopwatch();
    sw.Start();
    var user = context.Authentication.User.Identity.IsAuthenticated ?
        context.Authentication.User.Identity.Name :
        "anonymous";

    _logger.WriteVerbose(
        string.Format("{0} {1} '{2}{3}{4}' @ {5} for {6}",
        context.Request.Scheme,
        context.Request.Method,
        context.Request.PathBase,
        context.Request.Path,
        context.Request.QueryString,
        context.Request.LocalIpAddress,
        user));
     await Next.Invoke(context);

    _logger.WriteVerbose(
        string.Format("{0} {1} {2}ms - {3}",
        context.Response.StatusCode,
        context.Request.Path,
        sw.ElapsedMilliseconds,
        context.Request.Browser); //???
}
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc owin

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

具有开放通用接口的 Windsor 类型工厂

在我的应用程序中,我想依赖一个类中的多个存储库,每次都不需要所有存储库。我没有在不必要的情况下为每个实例构建一个实例,而是使用了Windsor 中的Typed Factory 工具

然而,为每个存储库注册一个工厂有点烦人,我想用一个开放的通用注册来代替它。我想要做的是如下所示:

container.Register(
    Component.For<IFactory<IRepository<>>>().AsFactory()
);
Run Code Online (Sandbox Code Playgroud)

但是,这是一个语法错误,因为缺少 IRepository 的类型参数。有没有我可以使用的语法来完成这项工作?

注意:我知道我可以注册一个无类型的 Factory 接口并使用它来创建多个组件。我对这样做不感兴趣,因为这基本上依赖于服务定位器 - 如果我没有注册依赖项,那么在代码尝试使用它之前我不会知道它 - 用我知道的方法即使我还没有创建实例,在构造函数中也有 this。

完整(简化)示例如下:

public class TestA { }
public class TestB { }
public interface IRepository<T> { T Create();    }
public class Repository<T> : IRepository<T>
{
    public T Create() { return Activator.CreateInstance<T>(); }
}

public interface IFactory<T>
{
    T Create();
    void Release(T instance);
}

class Program
{
    static void Main(string[] args)
    {
        IWindsorContainer container = new WindsorContainer();
        container.AddFacility<TypedFactoryFacility>();

        container.Register(
            // Individual …
Run Code Online (Sandbox Code Playgroud)

dependency-injection castle-windsor factory-pattern

2
推荐指数
1
解决办法
2107
查看次数