我已经问了一个类似的问题,但我甚至看不出我写的代码,看起来很可怕。有些不对劲。
我正在尝试使用Visual Studio,ASP.Net Web Pages和Entity Framework创建一个简单的Web应用程序。人们不熟悉Web页面,它基本上是一个像经典ASP和PHP的开发环境。
我有两张桌子,一张是工人,另一张是下班。我为两者创建了模型,它们是相关的,所以每个过时的记录都有一个工人。
基本上我正在使用这段代码:
if (IsPost)
{
try
{
Worker curWorker = new Worker();
try
{
curWorker = m.Workers.Find(decimal.Parse(Request.Form["WorkerId"]));
}
catch (Exception)
{
errors += "Please select a worker.";
}
try
{
overhour.OverhourAmount = decimal.Parse(Request.Form["OverhourAmount"]);
if (overhour.OverhourAmount == 0)
{
throw new Exception();
}
}
catch (Exception)
{
errors += "Hour field should be numerical and non-zero.";
}
overhour.Worker = curWorker;
overhour.OverhourDate = DateTime.Today;
curWorker.Overhours.Add(overhour);
if (errors != "")
{
throw new WrongValueException(errors);
}
m.SaveChanges();
Response.Redirect(Page.ParentPage);
}
catch (DbEntityValidationException ex)
{
errors = kStatic.getValidationErrors(ex.EntityValidationErrors, "<br />");
}
catch (WrongValueException ex)
{
errors = ex.Message.ToString();
}
catch (Exception ex)
{
errors = "Critical error, technical details: " + ex.Message;
}
}
Form有一个名为 WorkerId 的所有工人的组合框。它有效,但我有一些问题。
基本上我不知道如何构建我的代码。我想我在这里缺少一些大事,因为每个人都会验证他们的数据并过滤他们的输入。
由于
答案 0 :(得分:0)
通过验证装饰您的dtos。 Modelbinding将自动验证您的数据,如果失败将返回验证失败的属性以及您可以自定义的原因。您的业务规则需要在逻辑层中进行,逻辑层基本上将对您的数据模型进行操作并返回dtos。您的逻辑层将接受dtos,这将提供与Web API / mvc
的数据层分离