2011-02-09 12 views
0

가격이 표시된 제품 목록이 표시된 가격 페이지가 있습니다. 사용자는 쇼핑 카트에 여러 제품을 추가하도록 선택할 수 있습니다 (활성 쇼핑 카트가 페이지의 오른쪽에 표시됨). 뷰 모델에서 사용할 수있는 제품 죽 루핑 및 표시 사항 : 당신이에서 볼 수 있듯이ASP.NET MVC 장바구니 및 jQuery

<% foreach (var _product in _supplier.HotelProducts) 
    { %> 
    <tr> 
     <td colspan="2" align="left" valign="top"><% = _product.Description %></td> 
     <td align="left"> 
      <% using (Html.BeginForm("AddToCart", "ShoppingCart", FormMethod.Post, new { @class = "addProductToCartForm" })) 
       { %> 
       <input type="hidden" name="hSupplierID" id="hSupplierID" value="<% = _supplier.ID %>" /> 
       <input type="hidden" name="hProductCode" id="hProductCode" value="<% = _product.Code %>" /> 
       <input type="hidden" name="hProductDescription" id="hProductDescription" value="<% = _product.Description %>" /> 
       <input type="hidden" name="hProductPrice" id="hProductPrice" value="<% = _product.TotalPrice %>" /> 
       <input type="submit" value="+ Add to cart" /> 
      <% } %> 
     </td> 
     <td valign="top" align="center"> 
      <span id="spanProductPrice" class="_price">$<% = _product.TotalPrice %></span> 
     </td> 
    </tr> 
<% } %>  

현재이

코드 내보기 (ASPX)에서 ... 나는 아약스/jQuery를 사용하여 구현하는 방법이다 코드 스 니펫 위의 "각 장바구니에 담기"버튼을 클릭하면 각 제품이 다시 제공되며 내 요구 사항은 공급 업체 ID 및 제품 세부 정보 (코드, 설명 번호 & 가격)를 제 컨트롤러와 장바구니에 전달하는 것입니다. 제품 번호가 &이고 외부 웹 서비스에서 가격을 책정 했으므로 제품 코드를 전달하고 해당 설명을 서버 측에서 & 가격으로 검색 할 수있는 방법이 없습니다. 따라서 사용자가 추가 할 때 필요한 제품 세부 정보를 캡처해야합니다. 그것은 장바구니에. [1] 더 나은 방법으로는

있습니까

: 여기
$(function() { 
    $(".addProductToCartForm").submit(function (e) { 
     e.preventDefault(); 
     var HiddenCartForm = { 
      SupplierID: $(this.hSupplierID).val(), 
      Code: $(this.hProductCode).val(), 
      Description: $(this.hProductDescription).val(), 
      TotalPrice: $(this.hProductPrice).val() 
     }; 
     $.post($(this).attr("action"), HiddenCartForm, function (data) { 
      //alert("Success"); 
      renderCart(data); 
     }); 
     return false; // form already submitted using ajax, don't submit it again the regular way 
    }); 
}); 

function renderCart(data) { 
    $("#rightColumn").html(data); 
} 

내가 두 질문이 나는 JQuery와

public class HiddenCartForm 
    { 
     public string SupplierID { get; set; } 
     public string Code { get; set; } 
     public string Description { get; set; } 
     public decimal? TotalPrice { get; set; } 
     //public ProductView Product { get; set; } 
    } 

를 통해 컨트롤러로보기에서 정보를 전달하는 데 사용 내 사용자 지정 HiddenCartForm 개체입니다 이 시나리오를 처리합니까? 보기에 많은 형식 & 숨김 필드 (공급 업체 ID & 제품 세부 정보 보유)가 거의 불편하지 않습니다. 이 양식 & 숨겨진 필드는 누군가가 소스를 볼 때 표시됩니다.

[2] 사용자가 장바구니에 특정 제품을 추가 할 때 "_product"의 모든 정보가 필요합니다. 숨겨진 필드를 사용하는 대신 JQuery를 통해이 정보를 전달할 수있는 더 좋은 방법이 있습니까? 내 제품에 foreach (var _product in _supplier.HotelProducts)의 정보가 반복됩니다.

현재 MVC 2를 사용 중입니다.

답변

0

왜 제품 설명과 가격을 양식 게시에 전달해야합니까? AJAX 게시물을 처리하는 컨트롤러 작업이 데이터베이스에서 그 값을 보지 못했습니까? 모델 정의 방법에 따라 공급 업체 ID도 비슷한 이유로 제거 될 수 있습니다.

+0

Kevin, 외부 WebService를 호출하여 제품 및 가격 목록을 얻었습니다.이 정보는 로컬 DB에 저장되지 않습니다 ... 따라서 제품 코드를 전달하고 해당 설명 및 가격을 검색 할 방법이 없습니다. 따라서 사용자가 장바구니에 추가 할 때 필요한 제품 세부 정보를 캡처해야합니다. 공급자에 대한 추가 정보를 표시해야하지만 로컬 DB에 공급자 데이터가 있으므로 SupplierID를 전달하고 컨트롤러에서 다른 정보를 조회하지만 제품에 대해 동일한 작업을 수행 할 수는 없습니다. ( – Alex

+0

제품 및 가격 데이터를 외부 웹 서비스에 전화 할 때 (그리고 일정 기간 후에 삭제) 문제가됩니다. 숨겨진 필드에 저장하는 문제는 사용자가 데이터를 변경하는 것이 쉽지 않은 경우입니다 (예 : 가격을 0 달러로하고 무료로 상품을 받으십시오.) –

+0

감사합니다. 케빈, 저 라인을 생각하고 있습니다. – Alex