小编rod*_*dbv的帖子

如何在没有表单的情况下将字符串数组发布到ASP.NET MVC Controller?

我正在创建一个小应用程序来自学ASP.NET MVC和JQuery,其中一个页面是一个项目列表,其中一些可以选择.然后我想按下一个按钮并使用JQuery的Post函数向我的控制器发送一个List(或类似的东西),其中包含所选项目的ID.

我设法得到一个数组,其中包含所选元素的ID,现在我想发布它.我可以这样做的一种方法是在我的页面中有一个虚拟表单,带有隐藏值,然后使用所选项目设置隐藏值,并发布该表单; 不过,这看起来很狡猾.

有没有更简洁的方法来实现这一点,通过将阵列直接发送到控制器?我尝试了一些不同的东西,但看起来控制器无法映射它接收的数据.这是迄今为止的代码:

function generateList(selectedValues) {
   var s = {
      values: selectedValues //selectedValues is an array of string
   };
   $.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
Run Code Online (Sandbox Code Playgroud)

然后我的控制器看起来像这样

public ActionResult GenerateList(List<string> values)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

我设法获得的只是控制器参数中的"null"...

有小费吗?

asp.net-mvc jquery json

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

用Moq调用原始方法

我有一个带有2个方法的ProductRepository,GetAllProducts和GetProductByType,我想在GetProductByType上测试逻辑.在内部,GetProductByType调用GetAllProducts,然后过滤正确的.

public virtual IEnumerable<Product> GetAllProducts()
{
    //returns all products in memory, db etc
}

public virtual IEnumerable<Product> GetProductsByType(string type)
{
    return (from p in GetAllProducts() where p.Type == type select p).ToList();
}
Run Code Online (Sandbox Code Playgroud)

因此,在我的测试中,我想模拟对GetAllProducts的调用,因此它返回在我的测试中定义的产品列表,然后调用原始的GetProductsByType,它将使用模拟的GetAllProducts.

我正在尝试类似下面的代码,但原始的GetProductByType没有被执行,它也被模拟了.在TypeMock中,我有一个CallOriginal方法来解决这个问题,但我无法用Moq来解决这个问题.有任何想法吗?

var mock = new Mock<ProductRepository>();
mock.Setup(r => r.GetAllProducts()).Returns(new List<Product>() {p1, p2, p3});
var result = mock.Object.GetProductsByType("Type1");
Assert.AreEqual(2, result.Count());
Run Code Online (Sandbox Code Playgroud)

c# moq mocking

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

在Javascript中使用Regex删除HTML注释

我从Word生成了一些丑陋的HTML,我想从中删除所有HTML注释.

HTML看起来像这样:

<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>NO-BOK</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]-->
Run Code Online (Sandbox Code Playgroud)

..我正在使用的正则表达式就是这个

html = html.replace(/<!--(.*?)-->/gm, "")
Run Code Online (Sandbox Code Playgroud)

但似乎没有匹配,字符串不变.

我错过了什么?

javascript regex

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

在TDD中,在编写空方法之前运行测试的优势是什么?

我看到很多TDD从业者遵循这个周期:

1)编写测试,就好像目标对象和API已经存在一样.

2)编译解决方案并看到它中断.

3)编写足够的代码以使其编译.

4)运行测试,看看是否失败.

5)编写足够的代码以使其通过.

6)运行测试并看到它通过

7)重构

步骤1和2的优点是什么?对于像Visual Studio这样的IDE,这真的很烦人,因为intellisense跳到那里试图猜测不存在的方法和属性.

我通常从第3步开始,让我的所有方法都抛出NotImplementedException,这对我来说似乎很好,但也许我错过了一些东西.

编辑以澄清:这不是一个问题,为什么我应该看到测试在通过之前失败; 从第3步开始,这是完全有道理的.我的问题是为什么甚至在此之前人们会在单元测试中调用API中不存在的方法(因此VS将显示红色波形,或者将整个方法名称描绘为红色等)并尝试编译.对我而言,VS告诉我该方法不存在的事实已经足够了.

tdd unit-testing visual-studio-2008

23
推荐指数
4
解决办法
1111
查看次数

.NET是否给了我2008年12月29日错误的周数?

根据官方(格里高利)日历,2008年12月29日的周数为1,因为在第52周的最后一天(即28/12)之后,该年剩下三天或更少的天数.有点奇怪,但没关系,规则是规则.

因此,根据这个日历,我们有2008/2009年的这些边界值

  • 28/12是第52周
  • 29/12是第1周
  • 1/1是第1周
  • 8/1是第2周

C#提供了一个GregorianCalendar类,它有一个函数GetWeekOfYear(date, rule, firstDayOfWeek).

该参数rule是一个包含3个可能值的枚举:FirstDay, FirstFourWeekDay, FirstFullWeek.根据我的理解,我应该FirstFourWeekDay遵守规则,但我尝试了所有这些以防万一.

最后一个参数通知哪个工作日应该被视为一周的第一天,根据该日历,它是星期一,所以它是星期一.

所以我启动了一个快速而肮脏的控制台应用程序来测试这个:

using System;
using System.Globalization;

namespace CalendarTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var cal = new GregorianCalendar();
            var firstWeekDay = DayOfWeek.Monday;
            var twentyEighth = new DateTime(2008, 12, 28);
            var twentyNinth = new DateTime(2008, 12, 29);
            var firstJan = new DateTime(2009, 1, 1);
            var eightJan = new DateTime(2009, 1, 8);
            PrintWeekDays(cal, twentyEighth, firstWeekDay);
            PrintWeekDays(cal, …
Run Code Online (Sandbox Code Playgroud)

.net c# calendar gregorian-calendar week-number

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

我应该如何构建一个简单的ASP.NET MVC应用程序?

我一直在阅读有关ASP.NET MVC,SOLID等的一些内容,我正在尝试为中小型ASP.NET MVC应用程序找出一个简单的"配方",将这些概念放在一起; 我最关心的问题是结果是控制器太复杂,就像webforms中的代码隐藏文件一样,所有类型的业务逻辑都包含在其中.

我正在考虑以下架构,用于小型数据驱动的应用程序:

  • 控制器:仅处理请求,调用适当的服务并将操作结果返回给View;
  • 模型:POCO,处理所有业务逻辑,授权等.取决于存储库,完全不了解持久性基础结构.
  • 存储库:实现IRepository<T>,使用依赖注入,是我的db代码所在的位置; 只接收并返回POCO.

我正在考虑在控制器和模型之间提供服务,但如果它们只是传递方法调用,我不确定它会有多大用处.

最后应该有包含模型代码的单元测试,以及覆盖存储库代码的单元+集成测试(如果可能的话,遵循"红绿"实践)

思考?

architecture model-view-controller asp.net-mvc poco repository-pattern

10
推荐指数
1
解决办法
2739
查看次数

如何使用Firebug调试CSS,只显示单击时出现的元素?

我想为DHTML菜单调试CSS,但我要调试的元素是一个子菜单,所以它只在单击菜单中的顶部元素时出现.

所以我不能在Firebug上使用那个按钮来显示单击下一个元素的CSS,因为当我单击顶部菜单项时,它将显示该元素的CSS,而不是它的子元素,如果我首先展开菜单,然后单击Firebug按钮,子菜单消失(当它失去焦点时消失).

关于如何摆脱这个捕获22的任何提示?

css firebug

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

IE8:当系统访问window.localStorage时"系统找不到指定的路径"错误

我有一些访问window.localStorage的javascript代码,它在大多数机器上工作正常,但在其中一个(IE8 compat视图,Windows 7 64)我得到错误"系统无法找到指定的路径"每当我尝试阅读window.localStorage.我试图在SO和Google上找到一些关于它的讨论(没有雪茄),并且没有在浏览器的选项中找到任何可疑的设置.有没有人遇到过这个错误,并为它解决了问题?我可以在window.localStorage周围尝试/捕获,但我宁愿了解发生了什么.

javascript internet-explorer-8 local-storage

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

在元素中组合CSS类

这可能是我做过的最愚蠢的问题,但为什么下面的文字没有呈现红色?

<html>
  <style>
  .c1 .c2 { 
     color: red; 
  }
  </style>
  <body>
     <span class="c1 c2">This should be red</span>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:我想匹配包含c1和c2类的元素,如上面的例子,不能少.

css

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