ViewModel не работает

1
[HttpPost]
public ActionResult AddToCart(int phoneListingID, string sellerSKU)
{
    ShoppingBasket shoppingBasket = new ShoppingBasket();
    BasketItem currentItem = new BasketItem
    {
        sellerID = 1,
        Price = 100,
        Quantity = 1,
        sellerSKU = "testsku"
    };

    shoppingBasket.AddtoBasket(currentItem, this.HttpContext);

    var viewModel = new BasketViewModel
    {
        basketItems = ShoppingBasket.GetBasketItems(this.HttpContext),
        basketTotal = ShoppingBasket.GetBasketTotal(this.HttpContext)
    };

    return View(viewModel);
}

Моя форма:

@using (Html.BeginForm("AddToCart","ShoppingBasket",new { phoneListingID = 12345, sellerSKU = "test"}, FormMethod.Post ))    
{   
    <input type="submit" value="AddToCart" />
}

Ожидается, что моя страница BasketViewModel будет возвращена, но возвращаемое представление - ShoppingBasket/AddToCart?PhoneID=xxxx&sellerSKU=xxxx

Что я делаю не так?

Теги:
razor
asp.net-mvc
asp.net-mvc-4

2 ответа

2
Лучший ответ

В MVC Предположим, что ваше действие похоже на

public ActionResult MyAction()
{
    return View();
}

В этом scenerio он укажет на представление с именем "MyAction". Если вы хотите отправить его другому виду, сделайте так

public ActionResult MyAction()
{
    return View("MyViewName");
}

Если вы хотите передать некоторую модель, чтобы сделать ее

public ActionResult MyAction()
{
    return View("MyViewName",model); // Here model is your object of model class
}

В вашем фрагменте вы возвращаете значение по умолчанию, т.е. "AddToCart", потому что вы не описываете явно. Сделайте свой код похожим

return View("BasketViewModel",viewModel); // where BasketViewModel is your view name
0

Вы возвращаете этот вид контроллера, если вы хотите перевести его в другое представление, попробуйте return BasketViewActionResult(viewmodel)

Затем перейдите к своему "BasketViewActionResult",

Function BasketViewActionResult(model as BasketViewModel) as ActionResult
 return View(model)
End Function

Извините, если вы не получите VB, я могу перевести его на С# для вас, если хотите.

Изменение: вы также можете просто изменить действие формы.

 @using (Html.BeginForm("BasketView","ShoppingBasket",...

и сделайте все свои манипуляции в этом действии

Ещё вопросы

Сообщество Overcoder
Наверх
Меню