ASP.NET MVC: скрытое поле формы не принимает новое значение из модели после публикации - PullRequest
1 голос
/ 13 января 2010

На мой взгляд, у меня есть следующий код:

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

Когда страница первоначально загружается, CartID имеет значение NULL, поэтому при просмотре источника на странице устанавливается значение «». Когда я отправляю форму на странице (добавление товара), код контроллера создаст новую корзину и, используя строго типизированную модель просмотра, я передаю корзину обратно в представление с CartID. Проблема в том, что значение для скрытого поля формы не обновляется с новым значением.

Я подтвердил, что действительно возвращаю экземпляр Cart с сообщением CartID в сообщении.

Вот часть кода контроллера. Контроллер называется 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 Ответ

3 голосов
/ 13 января 2010

Я исправил это, создав новое расширение 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()));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...