[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
我做错了什么?
答案 0 :(得分:2)
在MVC中假设你的行动就像
public ActionResult MyAction()
{
return View();
}
在此场景中,它将指向名为“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
答案 1 :(得分:0)
如果您希望转移到另一个视图尝试,您将返回该控制器的视图
return BasketViewActionResult(viewmodel)
然后访问您的&#39; BasketViewActionResult&#39;
Function BasketViewActionResult(model as BasketViewModel) as ActionResult
return View(model)
End Function
很抱歉,如果你没有获得VB,如果你愿意,我可以把它翻译成C#。
编辑: 您也可以简单地更改表单的操作。
@using (Html.BeginForm("BasketView","ShoppingBasket",...
并在该行动中进行所有操作