将modelstate验证字符串转换为对象数组

时间:2010-01-20 23:01:23

标签: c# asp.net-mvc mbunit

仍然不满意所有的可用数据。我正在尝试这样做:

 Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, null, Enumerable.ToArray<object>(actionResult.ViewData.ModelState as IEnumerable<object>));

这是一个带有以下签名的mbUnit断言。

public static void IsTrue(bool actualValue, string messageFormat, params object[] messageArgs);

第三个参数导致(翻译成英文)

  

System.ArgumentNullException:值不能为null。   参数名称:source      在System.Linq.Enumerable.ToArray [TSource](IEnumerable`1 source)      在Co中的Coin.UnitTests.AccountControllerTests.MyTest():... \ Tests \ MbUnitTests \ ControllerTests.cs:第85行

加利奥。你是怎么做到的?

是的,有谁知道如何用英语获取这些消息? Vista是瑞典语。

1 个答案:

答案 0 :(得分:2)

ModelState未实现IEnumerable<T>,因此强制转换为空,Enumerable.ToArray()不喜欢空值,因此异常。

尝试这样的事情:

var errors = actionResult.ViewData.ModelState.Errors.Select(e => e.ErrorMessage).ToArray();
Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, string.Join("\n", errors));
相关问题