2010-01-13 3 views
1

후 모델에서 새 값을 수락하지 나는 현재 다음과 같은 코드를 가지고 : 나는 소스를 볼 수 있도록 할 때, CartID가 null의 경우 페이지가 처음로드ASP.NET MVC : 숨겨진 양식 필드 내보기에서 포스트

<%= Html.Hidden("Cart.CartID", Model.Cart.CartID) %> 

을 페이지에서 값은 ""로 설정됩니다. 페이지에 양식을 제출하면 (제품 추가) 컨트롤러 코드가 새로운 장바구니를 만들고 강력한 형식의 뷰 모델을 사용하여 CartID가있는보기로 카트를 다시 전달합니다. 문제는 숨겨진 양식 필드의 값이 새 값으로 업데이트되지 않는다는 것입니다.

저는 실제로 CartID가있는 Cart 인스턴스를 게시물에 다시 전달하고 있음을 확인했습니다.

다음은 컨트롤러 코드의 일부입니다. 컨트롤러를 Orders라고하며보기는 Create라고합니다.

[AcceptVerbs(HttpVerbs.Post)] 
[MultiButton(MatchFormKey = "action", MatchFormValue = "AddProduct")] 
public ActionResult Create(Product product, Cart cart, Customer customer) 
{ 
    if (cart.CartID == null) 
    { 
     Guid _cartIdentifier; 
     _cartIdentifier = Guid.NewGuid(); 
     var _newCart = new Cart() { CartIdentifier = _cartIdentifier, CartDate = DateTime.Now }; 
     cart = _cartRepository.Add(_newCart); 
    } 

    var _cartItem = new CartItem() { CartID = cart.CartID, ProductID = Convert.ToInt32(product.ProductID) }; 
    _cartRepository.Add(_cartItem); 

    var _cartItems = _cartRepository.GetCartItems(new CartItem() { CartID = cart.CartID }); 

    var viewState = new GenericViewState 
    { 
     Cart = cart, 
     CartItems = _cartItems 
    };   

    return View(viewState); 
} 

이전에이 문제가 발생 했습니까? 어떻게 고칠까요?

감사합니다.

+1

컨트롤러 중 일부를 볼 수 있습니까? –

+0

컨트롤러 코드로 게시물을 업데이트했습니다. – Mike

+0

'GenericViewState'는 어떻게 생겼습니까? –

답변

3

기본적으로 기본 설정보다 많은 새로운 Html.Hidden 확장명을 작성하여이 문제를 해결했습니다.

아래의 빠른 예.

public static class HtmlHelpers 
{ 
    public static string Hidden(this HtmlHelper helper, string name, object value) 
    { 
    return string.Format("<input type=\"hidden\" name=\"{0}\" value=\"{1}\" />", helper.Encode(name), helper.Encode(value.ToString())); 
    } 
} 
+0

@usr : 인코딩하기 위해 내 대답을 수정했을 수도 있습니다! –