我正在尝试根据客户端notification message
是否有error
来添加input
。
问题在于,如果客户端没有输入正确的详细信息,并且已尝试将其放在我的{的不同部分,我不知道将message code
放在哪里{1}}我认为这是有意义的。
我知道怎么做没有一个code method
,因为你只是使用了ViewModel
if语句。这就是我在某些Model.IsValid
上所做的,我没有使用controllers
。我还尝试在ViewModel
的代码中添加Model.IsValid
if语句,但这也不起作用。
我能够将ViewModel
放在正确的位置,但无论我将success message
置于何处,它似乎仍与error message
同时出现,这是不正确的。实际上,如果客户端没有success message
或输入错误,阻止成功创建,它就会弹出。
这是我使用select
:
POST
方法的代码
ViewModel
请注意 [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(DeliveryVM model)
{
Delivery delivery = new Delivery()
{
DriverID = model.DriverID,
Created_Date = DateTime.Now,
Created_Time = DateTime.Now
};
db.Deliverys.Add(delivery);
db.SaveChanges();
// save the selected orders based on the ID of the Delivery object
IEnumerable<int> selectedOrders = model.Orders.Where(o => o.IsSelected).Select(o => o.ID);
foreach (int ID in selectedOrders)
{
Order order = db.Orders.Where(o => o.OrderID == ID).FirstOrDefault();
order.DeliveryID = delivery.DeliveryID;
db.Entry(order).State = EntityState.Modified;
}
var driver = from ord in db.Drivers where ord.DriverID == delivery.DriverID select ord;
foreach (Driver ord in driver)
{
ord.DriverStatus = "Unavailable";
}
if (ModelState.IsValid)
{
db.SaveChanges();
Success(string.Format("Delivery No: {0} was successfully created!", delivery.DeliveryID), true);
return RedirectToAction("Details", new { id = delivery.DeliveryID });
}
// Error
Danger("Oh Snap! Looks like something went wrong!", true);
return View(model);
}
已正确放置。
使用Success(string.Format("Delivery No: {0} was successfully created!", delivery.DeliveryID), true);
无论我放置它的位置,它都会在Danger("Oh Snap! Looks like something went wrong!", true);
Delivery
之后弹出,而不是在created
时弹出。我解释了为什么我认为我应该把它放在我所做的地方,在代码片段中,但我错了。
任何人都可以帮我解决error
的位置,以便在有error message
时弹出,因为用户没有选择任何值或输入错误的详细信息?
查看:
error
答案 0 :(得分:1)
首先,检查验证的正确方法是:
Danger
这样,除非验证成功,否则您甚至都不会尝试保存。此外,一眼就能看出错误消息与成功消息的发送位置非常容易。
其次,即使你拥有的东西可以工作,你也必须考虑如何运行代码。首先,调用Danger
,并且总是调用,无论保存最终是否成功。然后你试图保存。如果保存成功,您已调用Danger
,因此您会收到错误消息和成功消息。在保存失败的情况下,则会生成500错误,这意味着处理将从错误处理程序中移除,以显示通用服务器错误消息,500.html的内容或您处理500s的任何自定义操作。无论如何,你打电话给try
{
db.SaveChanges();
}
except (DbEntityValidationException)
{
Danger("Oh Snap! Looks like something went wrong!", true);
return View(model);
}
这个事实已经很久了。
您可以捕获异常,然后做出相应的回应:
ModelState.IsValid
但是,然后,你不必要地击中了DB。使用{{1}}可用的内置模型验证要好得多。