小编Ser*_*eit的帖子

ASP.NET MVC应用程序的WatiN最佳实践/经验法则

我是狂热的TDD和BDD粉丝,但在UI测试方面做得不多.我有一个ASP.NET MVC 3应用程序与许多MSpec测试,我想使用WatiN添加演示文稿测试.

你测试什么样的东西?我是否必须为UI的初始加载编写测试,或仅针对因用户交互而更改的内容?

简而言之,在编写WatiN(和一般的UI测试)测试时,有什么好的经验法则和最佳实践?

asp.net-mvc watin coded-ui-tests asp.net-mvc-3

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

使用jquery自动完成难度

我正在使用jquery自动完成功能,但在文本框中加载自动完成功能很少

我的模型如下:

Users = new List<string>();
foreach (var item in User.LoadSortedByName())
{
    Users.Add(item.Name+"\n");
} 
Run Code Online (Sandbox Code Playgroud)

视图:

<p>@Html.TextBox("user", "")
 $(function () {
           $("input#user").autocomplete('@Model.Users');
});
Run Code Online (Sandbox Code Playgroud)

更新 - 简化的尝试,但仍然没有工作

_布局

<script src="@Url.Content("~/Scripts/jquery.autocomplete.js")" type="text/javascript"></script>

View


  <p><input type="text" id="tags" /></p>

<script type="text/javascript">
    $(function () {
            var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
            "Groovy",
            "Haskell",
            "Java",
            "JavaScript",
            "Lisp",
            "Perl",
            "PHP",
            "Python",
            "Ruby",
            "Scala",
            "Scheme"
        ];
        $( "#tags" ).autocomplete({
            source: availableTags
        });


    });
Run Code Online (Sandbox Code Playgroud)

jquery jquery-autocomplete asp.net-mvc-3

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

在C#中删除预编译器指令

我被要求保留一些不像遗产一样的代码,并且它充满了编译器指令,使它几乎不可读,几乎可维护.例证:

#if CONDITION_1
        protected override void BeforeAdd(LogEntity entity)
#else
        protected override void BeforeAdd(AbstractBusinessEntity entity)
#endif
        {
#if CONDITON_1
            entity.DateTimeInsert = DateTime.Now;
#else
            ((LogEntity) entity).DateTimeInsert = DateTime.Now;
#endif
            base.BeforeAdd(entity);
        }
Run Code Online (Sandbox Code Playgroud)

using 指令甚至更漂亮:

#if CONDITION_1
using CompanyName.Configuration;
#endif

#if CONDITION_2||CONDITION_1
using CompanyName.Data;
using CompanyName.Data.SqlBuilders;
#else
using CompanyName.Legacy.Database;
using CompanyName.Legacy.Database.SQLBuilders;
using CompanyName.Legacy.Database.SQLBuilders.parameterTypes;
#endif
Run Code Online (Sandbox Code Playgroud)

我以为我会ConditionalAttribute放手一搏,但在这种情况下这不会奏效

有什么方法可以解决这个编译器指令的噩梦吗?

代码是针对编译的.NET 3.5.

更新:
Oded回答建议删除BeforeAdd方法周围的编译器指令,从而使其重载.不幸的是,这两个方法都不会起作用,因为两个方法都应该覆盖一个AbstractBusiness类,它提供两种不同的实现,具体取决于最终包含哪些程序集:

protected virtual void BeforeAdd(TEntity entity) {}
Run Code Online (Sandbox Code Playgroud)

要么

protected virtual void BeforeAdd(AbstractBusinessEntity entity) {}
Run Code Online (Sandbox Code Playgroud)

此代码从过去一段时间创建的一组库中获取其依赖关系,并且从那时起一直在"升级".他们现在有4个不同版本的库,其中包含冲突的命名空间和不同的实现.所有这些都与使用(非常)旧版本的应用程序的"向后兼容性"有关.


结论

我最终选择了@Oded的答案,因为它作为一种通用方法最有意义( …

c# compiler-directives .net-3.5 c#-3.0

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

如何通过JavaScript获取HttpStatusCodeResult的StatusDescription

我有一个使用的表单 Ajax.BeginForm()

<% using (Ajax.BeginForm("UpdateCompanyShop", "CompanyShop", FormMethod.Post, 
    new AjaxOptions { OnSuccess = "updateList", OnFailure = "onError",
    UpdateTargetId="slist", LoadingElementId = "loading" }))
Run Code Online (Sandbox Code Playgroud)

控制器动作代码如下:

if(string.IsNullOrEmpty(company.Address))  
    return new HttpStatusCodeResult(418, "Please fill in address");  
else if (company.DistrictID < 0)  
    return new HttpStatusCodeResult(418, "Please select district");  
else  
    return new HttpStatusCodeResult(418, "Error saving data");
Run Code Online (Sandbox Code Playgroud)

我在AjaxOptions中使用了OnFailure ="onError",我有这样的客户端脚本

function onError(response, status, error) {  
    var statusDescription = ***something***;  
    alert(statusDescription);
}
Run Code Online (Sandbox Code Playgroud)

我在JavaScript中使用调试器但是找不到StatusDescription(第二个参数HttpStatusCodeResult)

知道如何获得状态描述吗?或者我根本不应该使用HttpStatusCodeResult?在AJAX提交中返回错误(除了验证)的正确方法是什么?

asp.net-mvc-3 asp.net-mvc-2

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

ASP.NET Core 1 (RTM) 中的自定义日期时间模型绑定器

我正在编写 ASP.NET Core 1 应用程序,它有一个 Web API 控制器,供应商将在其中发布数据。

这是 Model 类的简化版本,我会将传入数据绑定到该类:

public class Lead
{
    public int SupplierId { get; set; }
    public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是日期将以德语格式发布,例如30.09.2016. 我不想将应用程序的全球文化设置为,de-DE因为 a) 我不是德国人,并且 b) 应用程序的其余部分将使用 ISO 日期。

我已经准备好编写一个自定义的IModelBinder,因为它在 ASP.NET Core MVC 中显然是强制性的,一个IModelBinderProvider.

这是我的实现IModelBinderProvider

public class GermanDateTimeModelBinderProvider : IModelBinderProvider
{
    public IModelBinder GetBinder(ModelBinderProviderContext context)
    {
        if (context == null)
            throw new ArgumentNullException(nameof(context));

        if (!context.Metadata.IsComplexType && 
                context.Metadata.ModelType == typeof(DateTime))
            return new …
Run Code Online (Sandbox Code Playgroud)

c# model-binding custom-model-binder asp.net-core-mvc asp.net-core-webapi

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

使用MSpec(BDD指南)干燥ASP.NET MVC控制器操作的非常类似的规范

我有两个非常相似的规范,用于两个非常相似的控制器动作:VoteUp(int id)和VoteDown(int id).这些方法允许用户向上或向下投票; 有点像StackOverflow问题的投票上/下功能.规格是:

VoteDown:

[Subject(typeof(SomeController))]
public class When_user_clicks_the_vote_down_button_on_a_post : SomeControllerContext
{
    Establish context = () =>
    {
        post = PostFakes.VanillaPost();
        post.Votes = 10;

        session.Setup(s => s.Single(Moq.It.IsAny<Expression<Func<Post, bool>>>())).Returns(post);
        session.Setup(s => s.CommitChanges());
    };

    Because of = () => result = controller.VoteDown(1);

    It should_decrement_the_votes_of_the_post_by_1 = () => suggestion.Votes.ShouldEqual(9);
    It should_not_let_the_user_vote_more_than_once;
}
Run Code Online (Sandbox Code Playgroud)

VoteUp:

[Subject(typeof(SomeController))]
public class When_user_clicks_the_vote_down_button_on_a_post : SomeControllerContext
{
    Establish context = () =>
    {
        post = PostFakes.VanillaPost();
        post.Votes = 0;

        session.Setup(s => s.Single(Moq.It.IsAny<Expression<Func<Post, bool>>>())).Returns(post);
        session.Setup(s => s.CommitChanges());
    };

    Because of = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc bdd mspec

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

EF代码的自定义初始化策略首先不删除表以添加列

最新的EF Code First NuGet包附带了一个IDatabaseInitializer被调用的自定义实现DontDropDbJustCreateTablesIfModelChanged.顾名思义,当检测到模型更改时,它不会丢弃并重新创建整个数据库,只需删除并重新创建表.

说我有这个模型类:

public class User
{
    public string Username { get; set; }

    // This property is new; the model has changed!
    public string OpenID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个如何去实现一个IDatabaseInitializer不降大任于表无论是.在这种情况下,它只会OpenID向User表添加一列?

entity-framework ef-code-first entity-framework-4.1

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

使用Linq基于逗号分隔的属性值拆分List <T>

鉴于此类:

public class Article
{
   public string Name { get; set; }
   public string Colour { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

假设我有以下内容List<Article>,其中一些文章包含逗号分隔的名称:

var list = new List<Article> 
{
    new Article { Name = "Article1, Article2, Article3", Colour = "Red" },
    new Article { Name = "Article4, Article5, Article6", Colour = "Blue" },
}
Run Code Online (Sandbox Code Playgroud)

在一个Linq声明中,有没有办法获得一个列表,其中每个逗号分隔的名称成为一个单独的文章?

var list = new List<Article> 
{
    new Article { Name = "Article1", Colour = "Red" },
    new Article { Name = "Article2", Colour …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

是否可以在ASP.NET MVC中重用多个项目的部分视图?

我知道ASP.NET MVC 3不支持区域重用,这对于Web应用程序的用户管理区域非常方便,但部分视图怎么样呢?

假设我将Pager"控制"视为Razor(或者WebFormViewEngine,无关紧要)部分视图,我可以在我的MVC应用程序中轻松重用.

是否可以在多个MVC应用程序中重用它,而不是在新应用程序中创建局部视图并复制粘贴代码?

code-reuse partial-views razor webforms-view-engine asp.net-mvc-3

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

根据受欢迎程度选择项目:避免美化排序

我有一个网站,用户可以发布和投票建议.在页面上,我最初列出了10个建议,标题每7秒获取一个新的随机建议.

我希望投票能够影响建议出现的概率,包括10个建议列表和标题建议.为此,我有一个小算法来计算人气,考虑到投票,年龄和其他一些事情(需要大量的调整).

无论如何,在运行算法后,我有一个建议和流行度指数字典,按人气排序:

{ S = Suggestion1, P = 0.86  }
{ S = Suggestion2, P = 0.643 }
{ S = Suggestion3, P = 0.134 }
{ S = Suggestion4, P = 0.07  }
{ S = Suggestion5, P = 0.0   }
{ . . .}
Run Code Online (Sandbox Code Playgroud)

我不希望这是一个美化的类型,所以我想在选择过程中引入一些随机元素.

简而言之,我希望受欢迎程度是从列表中挑选出一个建议的概率.

有完整的建议/受欢迎列表,我如何根据概率选择10?如何将相同的内容应用于循环标头建议?

.net c# algorithm probability

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