【问题标题】:Asp.NET MVC strong typed controllersAsp.NET MVC 强类型控制器
【发布时间】:2010-02-25 13:54:45
【问题描述】:

我在某处看到这样的代码:

return View(x=>x.List());

代替

return View("List");

我需要什么来实现这一目标?

我正在使用 Asp.net MVC 2 RC 2

编辑我不是指强类型视图

下一个例子

return this.RedirectToAction(c => c.Speaker());

【问题讨论】:

    标签: asp.net-mvc mvccontrib redirecttoaction


    【解决方案1】:

    Strongly Typed RedirectToActionMvcContrib 项目提供。

    return RedirectToAction(c => c.Speaker());
    
    return RedirectToAction<OtherController>(c => c.Speaker());
    

    【讨论】:

    • 它使用神奇的 System.Linq.Expression。 c.Speaker() 被编译成允许库从中提取字符串“Speaker”的表达式。
    【解决方案2】:

    强类型的不是控制器……而是视图。

    要获得强类型视图,您可以使用 VS MVC 工具中的提示,右键单击操作并选择“创建强类型视图”,然后选择合适的业务对象作为模型,或者您可以通过将页面指令的 Inherits 属性更改为 System.Web.Mvc.ViewPage 来直接更改页面,其中 SomeModel 是实现“List”属性的模型,并且是将绑定到页面的模型。

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
    

    另外,我相信你在想的是视图上的用法:

    <%= Html.LabelFor(m -> m.SomeValue) %>
    

    再说一次,我不相信你在考虑强类型控制器,我很确定你看到的是强类型视图。

    如果你通过NerdDinner tutorial,你会一次又一次地看到这种事情。

    【讨论】:

    • 我知道什么是强类型视图,但我的意思是别的。例如,您可以在 RedirectToAction 调用中使用它,例如: return this.RedirectToAction(c => c.Speaker());
    【解决方案3】:

    我不确定从调用 View 方法(将不同的控制器操作作为参数)返回的结果是什么。正如您所指出的,RedirectToAction 具有这种行为以及一些 Html 辅助方法,例如:

    <%= Html.ActionLink<myController>(x => x.Index(), "My Action") %>
    

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2010-10-20
      相关资源
      最近更新 更多