首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在页面刷新中获取控制器模型

如何在页面刷新中获取控制器模型
EN

Stack Overflow用户
提问于 2017-02-10 14:18:22
回答 1查看 1.3K关注 0票数 1

我的应用程序有两个屏幕。在第一种情况下,用户选择使用TempData对象传递给下一个控制器的两个值(我们不能使用Session对象)。

然后,在我的第二个页面的控制器中,它读取这些值并将它们分配给一个新模型。除非用户刷新页面,否则这一切都能很好地工作。在这种情况下,TempData变量将丢失,并且我的模型不再包含这些值。

第一个控制器操作(当您从选择列表中选择第二个项目时)

代码语言:javascript
运行
复制
[HttpPost]
public ActionResult Select(ProductSelector model)
{
    if (!ModelState.IsValid)
    {
        ProductSelector newModel = InitialiseProductSelectorModel();
        newModel.ProductId = model.ProductId;
        newModel.StatusId = model.StatusId;
        return View("ProductSelector", newModel);
    }
    TempData["StatusId"] = model.StatusId;
    TempData["ProductId"] = model.ProductId;
    return RedirectToAction("Create", "ProductDetails");
}

我的第二个控制器操作如下:

代码语言:javascript
运行
复制
[HttpGet]
public ActionResult Create()
{
    int ProductId, StatusId;
    // Get ProductId and StatusId from product selector screen
    int.TryParse(TempData["ProductId"].ToString(), out ProductId);
    int.TryParse(TempData["StatusId"].ToString(), out StatusId);
    model.ProductId = ProductId;
    model.StatusId= StatusId;

    return View("OrderCreate", model);
}

我怎么才能避开这一切?我还有另一个操作,它将模型作为参数,但这是用于POST方法的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 15:21:49

尝试用这种方式传递参数

代码语言:javascript
运行
复制
return RedirectToAction("Create", "ProductDetails", 
                 new { StatusId = StatusId , ProductId = ProductId });

在下一个操作中,接收以下值

代码语言:javascript
运行
复制
public ActionResult Create(int StatusId, int ProductId)

编辑::另一种方式(没有查询字符串):

在您的create操作中,在从TempData获取数据之前执行此操作

代码语言:javascript
运行
复制
[HttpGet]
public ActionResult Create()
{
    int ProductId, StatusId;

    TempData.Keep("ProductId"); // These two lines will keep data
    TempData.Keep("StatusId");  // upon multiple refreshes

    int.TryParse(TempData["ProductId"].ToString(), out ProductId);
    int.TryParse(TempData["StatusId"].ToString(), out StatusId);
    model.ProductId = ProductId;
    model.StatusId= StatusId;

    return View("OrderCreate", model);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42161584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档