自定义模型绑定器导致新的数据库插入

时间:2012-10-27 07:48:17

标签: c# asp.net-mvc custom-model-binder

我在ASP.NET MVC模型绑定中遇到了这个问题。我有一个带有country子对象的地址对象。但是 - 我正在使用自动填写国家/地区名称。所以在我看来,我有这样的事情:

@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);

等...

每次我保存时,都会创建一个新的国家/地区,其中包含我们在活页夹中找到的国家/地区的确切规格,但具有新ID。有线索吗?

0 个答案:

没有答案