2016-10-24 4 views
0

так что мое намерение состоит в том, чтобы сделать кнопку, которая позволит пользователю добавить элемент в его корзину, в методе db.savechanges это поймать эти исключения:Передача объекта от View к Controller ASP.NET MVC

Свойство: Item_Name Error: Поле Item_Name требуется. iisexpress.exe Информация: 0: Свойство: Item_Description Error: Поле Item_Description обязательное. s

Я проверил из своего db, и каждый элемент имеет все свои свойства, заполненные, так как я новичок в asp.net. У меня наверняка отсутствует что-то очевидное, которое возится с моими данными.

это мнение (пытается передать объект элемента в 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()); 
    } 

и это телега модель:

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; } 
    } 
    } 

ps я знаю, что мое мнение сложно, но я отчаянно хочу закончить этот проект очень скоро, любое предложение о лучшем способе doin g будет приветствоваться

+0

Какая находка представляет собой предмет объекта? Я не могу понять этот кусок кода. Или более точно, как выглядит класс Item и что вам нужно отправить из представления в контроллер? –

+0

Я отредактирую вопрос, дайте мне минуту –

ответ

0

Поскольку вам не хватает слишком много штук, я могу указать только на правильное направление.

Загрузить образец исходного кода Pro ASP.NET MVC 5 book by Adam Freeman. http://www.apress.com/downloadable/download/sample/sample_id/1500/

Extract Глава 9 - SportsStore, и посмотреть на те два files-

SportsStore.WebUI> Views> Product> List.cshtml

@foreach (var p in Model.Products) { 
    @Html.Partial("ProductSummary", p) 
} 

SportsStore.WebUI> Виды> 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> 
} 
+0

Спасибо, я решил свою проблему, передав идентификатор объекта с помощью TempData, но это далеко не хорошая практика, из-за крайнего срока назначения я даже не могу думать о лучшей практике, мне просто нужно чтобы все это работало, но спасибо, мне нужен такой ресурс :) –

Смежные вопросы