Нет for
циклов или if
условий с использованием pandas.DataFrame
:
import pandas as pd
df=pd.DataFrame.from_dict(listOfDict)
result=df[df['Age']=='10']['name'].tolist()
ВЫХОД
['Joel', 'Rachel']
Я не думаю, что это может быть сделано начиная с TryUpdateModel, который UpdateModel использует, ссылается на ControllerContext, который является пустым при вызове от модульного теста. Я использую RhinoMocks, чтобы дразнить или заблокировать различные компоненты, необходимые контроллеру.
var routeData = new RouteData();
var httpContext = MockRepository.GenerateStub<HttpContextBase>();
FormCollection formParameters = new FormCollection();
EventController controller = new EventController();
ControllerContext controllerContext =
MockRepository.GenerateStub<ControllerContext>( httpContext,
routeData,
controller );
controller.ControllerContext = controllerContext;
ViewResult result = controller.Create( formParameters ) as ViewResult;
Assert.AreEqual( "Event", result.Values["controller"] );
Assert.AreEqual( "Show", result.Values["action"] );
Assert.AreEqual( 0, result.Values["id"] );
Вот соответствующий бит из источника Controller.cs на www.codeplex.com/aspnet:
protected internal bool TryUpdateModel<TModel>( ... ) where TModel : class
{
....
ModelBindingContext bindingContext =
new ModelBindingContext( ControllerContext,
valueProvider,
typeof(TModel),
prefix,
() => model,
ModelState,
propertyFilter );
...
}
Или вы можете создать прокси-сервер данных формы, например
public class CountryEdit {
public String Name { get; set; }
public String Iso3166 { get; set; }
}
Итак, Controller.Action должен выглядеть, как
public ActionResult Edit(Int32 id, CountryEdit input)
{
var Country = input.ToDb();
// Continue your code
}