4
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        var key = new Dictionary<string, object>();
        key.Add("CPLID", new object());
        key.Add("EqID", new object());
        key.Add("Shift", new object());
        key.Add("DateTime", new object());
        key.Add("UpdateDateTime", new object());
        key.Add("No", new object());
        key.Add("LineStop.Remark", new object());
        key.Add("IsRemark", new object());
        key.Add("DispatchID", new object());
        key.Add("CopperID", new object());
        key.Add("CopperLV", new object());
        key.Add("InThickness", new object());
        key.Add("InWidth", new object());
        key.Add("OutWidth", new object());
        key.Add("OutLength", new object());
        key.Add("OutPiece", new object());
        key.Add("WeldingNum", new object());
        key.Add("GuideNum", new object());
        key.Add("Supply", new object());
        key.Add("Produce", new object());
        key.Add("ReturnMaterial", new object());
        key.Add("StartTime", new object());
        key.Add("EndTime", new object());
        key.Add("PrelineNum", new object());
        key.Add("SelflineNum", new object());
        key.Add("ProcessModeNum", new object());
        key.Add("ProcessResultNum", new object());
        key.Add("ProcessMode[0].CopperID", new object());
        key.Add("ProcessMode[0].Mode", new object());
        key.Add("ProcessMode[1].CopperID", new object());
        key.Add("ProcessMode[1].Mode", new object());
        key.Add("ProcessMode[2].CopperID", new object());
        key.Add("ProcessMode[2].Mode", new object());
        key.Add("ProcessMode[3].CopperID", new object());
        key.Add("ProcessMode[3].Mode", new object());
        //key.Add("ProcessMode[4].CopperID", new object());
        //key.Add("ProcessMode[4].Mode", new object());
        DictionaryValueProvider<object> ob = new DictionaryValueProvider<object>(key, CultureInfo.CurrentCulture);

        Assert.IsTrue(ob.ContainsPrefix("ProcessMode"));
    }
}

以上在 MVC3 中运行的示例测试代码是有效的。但是,“ContainsPrefix”方法在 MVC3 中很好,但在 MVC4 中不能正常工作。

然后,当我尝试添加更多项目时。ProcessMode[4].CopperID和(删除评论)之类的东西 ProcessMode[4].Mode。它在 MVC4 上工作正常。

我觉得很奇怪,</p>

该问题有时会出错:“发布带有 json 内容的 ajax”并且DefaultModelBinder它会产生一个错误的数据。

ContainsPrefixMVC3 和 MVC4 中的方法是否不同?

12/7 更新

http://forums.asp.net/t/1856357.aspx/1?FormValueProvider+skips+form+values

同样的问题,它让我无法使用 MVC4

使用“二进制搜索”搜索前缀字符串

制作“。” 和 '[' 跳过匹配

4

1 回答 1

1

我找到了解决方案.......................:

http://weblogs.asp.net/imranbaloch/archive/2012/12/08/fixing-model-the-binding-issue-of-asp-net-mvc-and-asp-net-web-api.aspx

于 2012-12-15T12:29:01.143 回答