我在 ASP.NET MVC 模型绑定中遇到了这个问题。我有一个带有国家/地区子对象的地址对象。但是 - 我正在为国家名称使用自动完成功能。所以在我看来,我有这样的事情:
@Html.EditorFor(model => model.Country)
我在这里写了一个自定义活页夹:
public class CountryBinder : IModelBinder
{
public CountryBinder(DataContext db)
{
this.Db = db;
}
protected DataContext Db { get; set; }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var countryName = controllerContext.HttpContext.Request[bindingContext.ModelName];
var result = Db.Countries.SingleOrDefault(
country => country.EnglishShortName.Equals(countryName) | country.Translation_NL.Equals(countryName));
return result;
}
}
数据上下文是这样注入的:
kernel.Bind<IDBContext>().To<DataContext>().InRequestScope();
控制器如下所示:
var model = this.participationRepository.Single(p => p.Id == participation.Id);
if (!participation.IsCancelled)
{
this.TryUpdateModel(model);
ETC...
每次我保存时 - 都会创建一个新的国家/地区,它具有我们在活页夹中找到的国家/地区的确切规格,但具有新的 ID。有什么线索吗?