【问题标题】:How do I open a MVC view from the controller they way I would open it from Razor code?如何从控制器打开 MVC 视图,就像我从 Razor 代码打开它一样?
【发布时间】:2015-03-09 21:16:52
【问题描述】:

Razor 和 asp.net MVC 的新手,所以请放轻松。我正在编辑别人创建的网站。

我需要从控制器打开一个视图。这个视图是我网站的主页,所以没有模型;页面上没有填充信息。该视图最初是从 Razor 代码如下所示的菜单打开的:

@Html.ActionLink(
      "Application Summary"
    , "MerchantApplicationSummary"
    , "Admin"
    , new { session = 1 }
    , new AjaxOptions { HttpMethod = "Get" }
)

如何从 .cs 控制器打开同一个视图 MerchantApplicationSummary?

我一直在像这样从控制器打开视图:

return View("Application", obj_App);

,但是当我尝试时收到错误消息:

传入字典的模型项的类型为“CarmelFinancialWeb.Models.ModelApplication”,但此字典需要类型为“PagedList.IPagedList`1[CarmelFinancialWeb.Models.ModelMerchantSummary]”的模型项。

谁能告诉我如何从控制器打开视图?谢谢!

【问题讨论】:

  • 您的视图将PagedList.IPagedList1[CarmelFinancialWeb.Models.ModelMerchantSummary] 声明为其模型。但是您正在尝试将视图与CarmelFinancialWeb.Models.ModelApplication 类型的模型一起使用。您需要一个新视图来匹配您的模型或更改您传递视图的模型 (obj_App)。
  • 向我们展示视图的代码。这个错误基本上表明你有一个 @model 声明,即使你说你没有。

标签: c# asp.net-mvc asp.net-mvc-4 razor partial-views


【解决方案1】:

假设这个链接:

@Html.ActionLink(
      "Application Summary"
    , "MerchantApplicationSummary"
    , "Admin"
    , new { session = 1 }
    , new AjaxOptions { HttpMethod = "Get" }
)

“应用程序摘要”:是链接文本
"MerchantApplicationSummary" : 是动作
“管理员”:是控制器
new { session = 1 } : 是路由参数

使用RedirectToAction方法代替View,像这样

var routeData = new RouteData();
routeData.Values.Add("session", "1");

return RedirectToAction("MerchantApplicationSummary", "Admin", routeData);

RouteData 应该在 System.Web.dll 的 System.Web.Routing 命名空间中找到。

【讨论】:

  • 谢谢特拉米。看起来这可能有效,但我收到一条消息说 RouteData 未定义。除了 system.web.mvc 我还需要包含一个库吗?
  • 我编辑了上面的答案。但你可以改用RouteValueDictionary
  • 谢谢。我只需要添加 System.Web.Routing 就可以了。再次感谢您的帮助 tlaramie!
猜你喜欢
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多