#asp.net-mvc #entity-framework #razor #controller
#asp.net-mvc #entity-framework #razor #контроллер
Вопрос:
итак, мое намерение состоит в том, чтобы создать кнопку, позволяющую пользователю добавлять товар в свою корзину, в методе db.savechanges, который улавливает эти исключения :
Свойство: Ошибка Item_Name: поле Item_Name является обязательным. iisexpress.exe Информация: 0 : Свойство: Ошибка Item_Description: поле Item_Description является обязательным. s
я проверил из своей базы данных, и у каждого отдельного элемента заполнены все их свойства, поскольку я новичок в asp.net я, конечно, упускаю что-то очевидное, что портит мои данные.
это представление (попытка передать объект item в actionlink
@foreach (var item in Model)
{
if (index > 6)
{
index = 0;
}
var newrow = 0;
if (index == 0)
{
newrow = 1;
}
if (newrow == 1)
{
index ;
<div class="product-one">
<div class="col-md-2 product-left">
<div class="p-one simpleCart_shelfItem jwe">
<a href="single.html">
<!-- go to product single view page-->
@{ if (item.Image.Image1 != null)
{
string imageBase64 = Convert.ToBase64String(item.Image.Image1);
string imageSrc = string.Format("data:image/png;base64,{0}", imageBase64);
<img src="@imageSrc" width="100" height="100" />
}
}
@Html.ActionLink("Add to Cart", "AddToCart", "Carts", new { itemdata = item }, new { @class = "btn btn-primary btn-large" })
</a>
<br />
</div>
</div>
</div>
это контроллер:
public ActionResult AddToCart(Item item)
{
//var query = from itemsel in db.Items where item.Item_ID == item.Item_ID select item;
var newcart = new Cart();
newcart.Account_ID = 1;
newcart.Cart_ID = 3;
newcart.Item_ID = item.Item_ID;
newcart.Item = item;
var itemsgroup = db.Items;
try
{
db.Carts.Add(newcart);
db.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}",
validationError.PropertyName,
validationError.ErrorMessage);
}
}
}
return View(itemsgroup.ToList());
}
и это модель cart:
public partial class Cart
{
public int Cart_ID { get; set; }
public int Account_ID { get; set; }
public int Item_ID { get; set; }
public virtual Item Item { get; set; }
}
}
p.s я знаю, что мой взгляд сложен, но я отчаянно хочу закончить этот проект очень скоро, любое предложение о лучшем способе его выполнения будет приветствоваться
Комментарии:
1. Что в представлении является элементом object? Я не могу понять этот фрагмент кода. Или более точно, как выглядит класс Item и что вам нужно отправить из представления в контроллер?
2. я отредактирую вопрос, дайте мне минутку
Ответ №1:
Поскольку вам не хватает слишком многих частей, я мог бы только указать вам правильное направление.
Загрузите пример исходного кода Pro ASP.NET Книга Адама Фримена по MVC 5.
Извлеките главу 9 — SportsStore и посмотрите на эти два файла-
Спортивный магазин.WebUI> Просмотры> Продукт> List.cshtml
@foreach (var p in Model.Products) {
@Html.Partial("ProductSummary", p)
}
Спортивный магазин.WebUI > Views > Shared > ProductSummary.cshtml
Обратите внимание, что для добавления отдельного товара в корзину покупок используется BeginForm.
@using (Html.BeginForm("AddToCart", "Cart")) {
<div class="pull-right">
@Html.HiddenFor(x => x.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" class="btn btn-success" value="Add to cart" />
</div>
}
Комментарии:
1. Спасибо, я решил свою проблему, передав идентификатор объекта с использованием TempData, но это далеко не лучшая практика, из-за крайнего срока назначения я даже не могу придумать наилучшую практику, мне просто нужно заставить все это работать, но, спасибо, мне нужен такой ресурс 🙂