私は商用アプリケーションを作成していますが、実際のエラーの内容を教えてくれる不満なエラーが発生しています。データベースにカートアイテムを追加中にエラーが発生しました
これは、実行
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddToCart(int product_ID)
{
if (db.Products.Any(product => product.Product_ID == product_ID))
{
//var successfulAddToCart = false;
var cartItem = new Cart();
// cartItem.CartID = Guid.NewGuid();
if (Request.IsAuthenticated)
{
var Customer = db.Customers.FirstOrDefault(customer => customer.Email == User.Identity.Name);
cartItem.Customer = Customer;
cartItem.CustomerID = Customer.Customer_ID;
}
else//not logged in, need to remember them somehow
{
// add a cookie for a guest user so we can save their cart for some time.
var CartCookie = new HttpCookie("Cart", Guid.NewGuid().ToString());
CartCookie.Expires.AddDays(2);
Request.Cookies.Add(CartCookie);
cartItem.Customer = new Customer();
cartItem.CustomerID = null;
}
//obviously not checked out since we just added to cart
cartItem.IsCheckedOut = false;
cartItem.Quantity = 1;
//one to one with product, so grab the first sku you find.
var Sku = db.SKU_Table.SingleOrDefault(sku => sku.Product_ID == product_ID);
cartItem.Sku = Sku;
cartItem.SkuID = Sku.SKU_ID;
//if everything is okay, save the changes to the database
if (ModelState.IsValid)
{
db.Cart.Add(cartItem);
db.SaveChanges();
}
//return a content string that displays success or failure
return Content("Add to cart was successful");
}
return Content("Add to cart was not successful");//unsuccessful add
}
が今私の知る限り、私のモデルは完全に有効であると私は問題の原因が何であるか分からない中であるコードです。カートアイテムオブジェクトの値を投稿すると便利です。エラーメッセージは本当に助けにはならないし、特にモデルが通過して以来、私のモデルステートに何か間違っているとは見えない。ここで
は、私はあなたがモデルのNULL可能で得意先を作ったことがわかりだけでなく、同様にあなたのデータベースにあなたの顧客IDフィールドのNullableを作ってみましょうか、顧客IDフィールドが取るできるようにすることができますカート・モデル
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace SeniorProjectMVC.Models
{
[Table("Cart")]
public class Cart
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Guid CartID { get; set; }
public int SkuID { get; set; }
public virtual Sku Sku { get; set; }
[Required]
public int Quantity { get; set; }
public int? CustomerID { get; set; }
public virtual Customer Customer { get; set; }
public bool IsCheckedOut { get; set; }
}
}
* RequiredAttribute属性は、フォーム上のフィールドの検証時にフィールドに値が含まれている必要があることを指定します。プロパティがnullの場合、空の文字列( "")を含む場合、または空白文字のみを含む場合は検証例外が生成されます。* ....このコード行を 'else'でチェックします。 'cartItem.CustomerID = null; '...' cartItem.CustomerID = 0; 'のようなものを変更し、それが動作するかどうかを確認してください:) – Hackerman
これを試しましたが、そのフィールドはヌル可能な整数なので、データベースには必要ありません。それは私のデータベースのnullable intフィールドとして出てくる – ddeamaral
'if(ModelState.IsValid)'が無意味である(あなたのモデルは 'int product_ID'です)、' cartItem.Customer'と 'cartItem.Sku'を設定する必要はありませんプロパティ(関連する 'CustomerID'と' SkuID'プロパティのみ)。 'CartID'(あなたはその行をコメントアウトしました)の値を設定していないので、例外がスローされます。 –