gpt4 book ai didi

asp.net-mvc - 使用 MVC 和流利的 Nhibernate,如何在将 ViewModel 上的唯一字段绑定(bind)到我的域对象并保存它们之前验证它们?

转载 作者:行者123 更新时间:2023-12-04 02:25:39 27 4
gpt4 key购买 nike

我有一个网站,允许用户创建新的零件记录。我试图找出验证特定字段的唯一性的最佳方法。我想确保如果 PartNumber 已经存在于不同的 Part 上,则不会有人尝试添加 PartNumber 1234 的 Part。

Web 应用程序使用带有流利 nHibernate 的 Asp.net MVC 将我的对象映射到数据库。我在我的 View 模型上对 ValidateNonEmpty、ValidateRange 等使用 CaSTLe 验证。我应该使用 ValidateSelf查询存储库以查看该部件号是否已存在的方法?在 ViewModel 上使用我的存储库感觉有些不对劲。

把这个逻辑放在 Controller Action 上对我来说会更好吗?这似乎不对,因为我希望我的 ViewModel 已经被验证(在 ModelBind 期间)。

或者也许不是以上任何一种。感谢您对此的任何帮助。

更新
好的,不确定这是否会有所帮助,但对于我的项目中的典型创建操作,我的保存操作如下所示:

public ActionResult Create(PartViewModel viewModel)
{
//I think I'd like to know if its Valid by this point, not on _repository.Save
if(ModelState.IsValid)
{
try
{
var part = _partCreateViewModelMap.MapToEntity(viewModel);

_repository.Save(part);
return Redirect("~/Part/Details/" + part.Id);
}
catch (Exception e)
{
// skip on down...
}
}

// return view to edit
return View(viewModel);
}

最佳答案

我被问过很多次这个问题。我的 friend 们担心他们是否可以从验证器代码中执行数据访问。答案很简单。如果你需要这样做,你应该这样做。通常我们需要在每个抽象级别做这样的检查。在所有检查之后,您应该准备好捕获由违反唯一约束引起的异常。

关于asp.net-mvc - 使用 MVC 和流利的 Nhibernate,如何在将 ViewModel 上的唯一字段绑定(bind)到我的域对象并保存它们之前验证它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com