私は2つのクラスを持っています。それらは名前がGoodでCategory.butです。実際には、良いentity.oneレコードを追加するために私のフォームをコントローラに提出すると、レコードを追加して1つのレコードをカテゴリに追加しますが、カテゴリにデータを追加したくありません。私のコントローラは、3つの引数良いエンティティを取得し、HttpPostedFileBase file, IEnumerable<HttpPostedFileBase> files
私のデータがAsp.net MVCの1つのテーブルの代わりに2つのテーブルに追加される理由
public class Good
{
public Good()
{
Images = new List<ImageList>();
Category = new Category();
}
[Key]
public int ProductId { get; set; }
[Display(Name = "نام کالا")]
public string Name { get; set; }
[Display(Name = "نام تصویر")]
public string ImageName { get; set; }
public string LargeImageName { get; set; }
[Display(Name = "نام لاتین")]
public string EnglishName { get; set; }
[Display(Name = "قیمت")]
public string Price { get; set; }
[AllowHtml]
[Display(Name = "توضیح مختصر")]
public string ShortDescription { get; set; }
[Display(Name = "کلمات کلیدی")]
public string Keyword { get; set; }
[Display(Name = "تعداد بازدید")]
public int PageVisit { get; set; }
[Display(Name = "وضعیت")]
public Boolean Status { get; set; }
//Fk
public int CategoryId { get; set; }
[ForeignKey("CategoryId")]
public Category Category { get; set; }
public virtual ICollection<ImageList> Images { get; set; }
}
===============
public class Category
{
[Key]
public int Id { get; set; }
[Display(Name = "نام مجموعه")]
public string CategoryName { get; set; }
[Display(Name = "نام انگلیسی مجموعه")]
public string EnglishName { get; set; }
//navigation
public virtual ICollection<Good> Good { get; set; }
}
============ =================
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ProductId,Name,ImageName,LargeImageName,EnglishName,Price,ShortDescription,Keyword,PageVisit,Status,CategoryId")] Good good, HttpPostedFileBase file, IEnumerable<HttpPostedFileBase> files)
{
if (ModelState.IsValid)
{
if (file != null)
{
if (file.ContentLength > 0)
{
var versions = new Dictionary<string, string>();
var checkSizeImage = ImageBuilder.Current.LoadImageInfo(file, null);
var setting = new ResizeSettings
{
MaxWidth = 600,
MaxHeight = 300,
Format = "jpg,png"
};
var path = Server.MapPath("/UploadFiles/Images/GoodGallery/");
versions.Add("_small", "maxwidth=270&maxheight=180&format=jpg");
versions.Add("_large", "maxwidth=600&maxheight=400&format=jpg");
foreach (var suffix in versions.Keys)
{
file.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
ImageBuilder.Current.Build(new ImageJob(file.InputStream, path + file.FileName + suffix, new Instructions(versions[suffix]), false, true));
}
//good. = DateTime.Now.ToString();
var dotPosition = file.FileName.IndexOf('.');
var largeFileName = file.FileName.Insert(dotPosition, ".jpg_large");
var fileName = file.FileName.Insert(dotPosition, ".jpg_small");
good.LargeImageName = largeFileName;
good.ImageName = fileName;
}
}
else
{
good.LargeImageName = "No_Image.png";
good.ImageName = "No_Image.png";
}
if (files != null)
{
foreach (var file2 in files)
{
if (file2 != null && file2.ContentLength > 0)
{
var versions = new Dictionary<string, string>();
var path = Server.MapPath("/UploadFiles/Images/GoodGallery/");
versions.Add("_small", "maxwidth=270&maxheight=180&format=jpg");
versions.Add("_large", "maxwidth=600&maxheight=400&format=jpg");
foreach (var suffix in versions.Keys)
{
file2.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
ImageBuilder.Current.Build(new ImageJob(file2.InputStream, path + file2.FileName + suffix, new Instructions(versions[suffix]), false, true));
}
var dotPosition = file2.FileName.IndexOf('.');
var largeFileName = file2.FileName.Insert(dotPosition, ".jpg_large");
var smallfileName = file2.FileName.Insert(dotPosition, ".jpg_small");
good.Images.Add(new ImageList { LargeImageName = largeFileName, SmallImageName = smallfileName });
}
}
}
else
{
good.Images.Add(new ImageList { LargeImageName = "No_Image.png", SmallImageName = "No_Image.png" });
}
ViewBag.Message = "فایل با موفقیت آپلود شد.";
}
db.Goods.Add(good);
db.SaveChanges();
ViewBag.CategoryId = new SelectList(db.Categories, "Id", "CategoryName", good.CategoryId);
return View(good);
}
通過することができ、デザインを確認してください。」私のプロジェクトの別の部分でそれを解決する方法。 –
その場所でカテゴリオブジェクトを作成する必要があります。必要なときにのみオブジェクトを作成します。この場合、プロジェクトの別の部分に明示的にカテゴリオブジェクトを作成する必要があります。 – Sid