【问题标题】:Controller searching for view instead of returning a different view method控制器搜索视图而不是返回不同的视图方法
【发布时间】:2016-01-01 22:16:47
【问题描述】:

下面列出了两个控制器操作:

public ViewResult TitleStorylines(int id)
    {
        var vm = Service.Get(id);
        vm.IsEditable = User.HasPermission(SecurityPermissionType.ManageStorylines);
        return View(vm);
    }

public ViewResult TitleStorylinesCreate(TitleStorylineModel model)
    {
        var created = Service.Create(model);
        return TitleStorylines(created.TitleId);
    }

我的项目中只有一个视图,称为TitleStorylines,第一个控制器操作处理得很好。但是当我调用第二种方法时,它给了我一个错误,说它找不到名为TitleStorylinesCreate 的视图,即使我明确地调用了前一种方法。什么给了?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    你试过了吗?

    return View("TitleStorylines",created.TitleId);
    

    编辑:根据您的更新:我猜您将表单发回 TitleStorylinesCreate。所以可能在保存后,您不想将用户重定向回相同的 Get 操作吗?

    [HttpPost]
    public ViewResult TitleStorylinesCreate(TitleStorylineModel model)
    {
        var created = Service.Create(model);
        return RedirectToAction("TitleStorylines",new { @id=created.TitleId});
    }
    

    在上面的示例中,我们正在使用PRG 模式。 发布 -> 重定向 -> 获取 保存后,我们将它们重定向回第一种方法。这将是一个HTTP GET 方法。

    【讨论】:

    • 好吧,我应该指定我的第一个方法接受 titleid 并从数据库中获取信息,然后将其塞入视图模型,然后返回视图。
    【解决方案2】:
            public ActionResult TitleStorylinesCreate(TitleStorylineModel model)
    {
        var created = Service.Create(model);
        return RedirectToAction("TitleStorylines",new { @id=created.TitleId});
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2021-03-24
      相关资源
      最近更新 更多