【发布时间】:2011-05-02 12:54:57
【问题描述】:
我正在寻找解决以下问题的最佳方法:我有一个搜索页面,可以选择不同的条件,这些条件在 SearchViewModel 中可用。现在搜索返回一个 SearchResults 列表,它们是产品。这些可以直接添加到篮子中。 现在的问题是,将商品添加到购物篮的操作是在 BasketController 而不是 SearchController 上。当用户单击它时,他会返回到 SearchPage,但会丢失他所做的所有选择。
if (Request.UrlReferrer != null)
return Redirect(Request.UrlReferrer.ToString());
我已尝试使用 TempData 解决此问题,但我收到“查询的结果不能多次枚举。”-异常。
private SearchViewModel EnsureViewModel(SearchViewModel viewModel)
{
if (TempData["SearchModel"] != null && viewModel.SearchResult == null)
viewModel = TempData["SearchModel"] as SearchViewModel;
TempData["SearchModel"] = viewModel;
return viewModel;
}
在这里我在模型中显示我的结果列表时,抛出了异常:
@Html.DisplayFor(p => Model.SearchResult)
我还考虑过可能有一种方法可以使用局部视图来做到这一点? 当然,我最后的资源只是复制代码,但我对这个想法并不感到兴奋......
感谢任何想法,谢谢=)
编辑 使用如下形式调用控制器:
@using (Html.BeginForm("Add", "Basket", new { id = Model.Name } ))
{
@Html.TextBox("amount", "1", new { name="amount", maxlength=7, @class = "txtfield number" })
<button><img src="@Url.Content("~/Content/images/icon_basket.gif")" border="0" width="14" height="10" class="basket" /></button>
}
【问题讨论】:
-
不确定您的问题到底是什么...为什么您不能在视图上设置表单以将所有已检查的产品直接发布到
BasketController? -
它有一个“Add-To-Basket”-Button,通过购物篮控制器将产品添加到购物篮,但用户必须在搜索页面上用搜索视图模型说。我希望这让它更清楚一点......
标签: asp.net-mvc model controllers tempdata