Я хотел бы разделить нечисловые элементы от данных POST перед использованием UpdateModel
обновить копию в базе данных. Существует ли способ сделать это?
// TODO: it appears I don't even use the parameter given at all, and all the magic
// happens via UpdateModel and the "controller's current value provider"?
[HttpPost]
public ActionResult Index([Bind(Include="X1, X2")] Team model) // TODO: stupid magic strings
{
if (this.ModelState.IsValid)
{
TeamContainer context = new TeamContainer();
Team thisTeam = context.Teams.Single(t => t.TeamId == this.CurrentTeamId);
// TODO HERE: apply StripWhitespace() to the data before using UpdateModel.
// The data is currently somewhere in the "current value provider"?
this.UpdateModel(thisTeam);
context.SaveChanges();
this.RedirectToAction(c => c.Index());
}
else
{
this.ModelState.AddModelError("", "Please enter two valid Xs.");
}
// If we got this far, something failed; redisplay the form.
return this.View(model);
}
Извините за краткость, всю ночь, работая над этим; надо надеяться, мой вопрос достаточно ясен? Также извините, так как это - своего рода вопрос о новичке, который я смог получать с несколькими часами траления документации, но я оказан давление временем... bleh.
Вместо использования автоматической привязки модели в параметрах метода действия вы можете принять опубликованную коллекцию FormCollection и работать с ней. Вы могли бы (1) изменить значения в этой специальной коллекции, а затем (2) привязать вашу модель вручную, используя UpdateModel
/ TryUpdateModel
.
например,
public ActionResult Index(FormCollection formCollection)
{
DoWhateverToFormCollection(formCollection);
Team model;
// TO-DO: Use TryUpdateModel here and handle more nicely
// Should also pass in binding whitelist/blacklist to the following, if didn't remove from the formCollection already...
UpdateModel<Team>(model, formCollection);
// rest of your code...
}
Надеюсь, это сработает, как рекламируется, и удачи!
Я полагаю, вы можете использовать для этого Custom Model Binder . Скотт Хансельман опубликовал здесь статью , в которой описывается процесс, используя в качестве примера концепцию разделения DateTime на две отдельные части.