从asp.net MVC2中的视图调用控制器中的公共方法

从asp.net MVC2中的视图调用控制器中的公共方法,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我在控制器中有一个返回字符串的方法 我需要从视图中调用此方法以获取字符串并在视图中显示 我正在使用MVC2。如何从视图中调用控制器中的公共方法?您真的不应该从视图中调用控制器中的方法,这是MVC模式的倒退。控制器调用视图。可以在调用时将数据从控制器传递到视图,也可以是属于视图可以使用的帮助器类的方法 编辑:如果您不熟悉,请使用帮助程序。您确实不应该从视图中调用控制器中的方法,这与MVC模式相反。控制器调用视图。可以在调用时将数据从控制器传递到视图,也可以是属于视图可以使用的帮助器类的方法 编辑:

我在控制器中有一个返回字符串的方法

我需要从视图中调用此方法以获取字符串并在视图中显示


我正在使用MVC2。如何从视图中调用控制器中的公共方法?

您真的不应该从视图中调用控制器中的方法,这是MVC模式的倒退。控制器调用视图。可以在调用时将数据从控制器传递到视图,也可以是属于视图可以使用的帮助器类的方法


编辑:如果您不熟悉,请使用帮助程序。

您确实不应该从视图中调用控制器中的方法,这与MVC模式相反。控制器调用视图。可以在调用时将数据从控制器传递到视图,也可以是属于视图可以使用的帮助器类的方法


编辑:如果您不熟悉,请使用帮助程序。

Parrots是正确的,您不应该从视图访问控制器(如他所说使用帮助程序),但如果必须:

<%= ((MyController)this.ViewContext.Controller).SomeMethod() %>

Parrots是正确的,您不应该从视图访问控制器(如他所说,使用助手),但如果必须:

<%= ((MyController)this.ViewContext.Controller).SomeMethod() %>

如果需要调用某个对象(哪个视图不应该调用,但是…),可以为视图提供回调,而不是引用视图中的控制器:

ViewData["callback"] = new Func<string>(() => "string");
// or for strongly typed views
Model.Callback = new Func<string>(() => "string");
ViewData[“callback”]=newfunc(()=>“string”);
//或用于强类型视图
Model.Callback=newfunc(()=>“字符串”);
鉴于

<%= ((Func<string>)ViewData["callback"])() %>
<%= Model.Callback() %>


但是最好不要这样做。

如果需要调用某个对象(哪个视图不应该调用,但是…),可以为视图提供回调,而不是引用视图中的控制器:

ViewData["callback"] = new Func<string>(() => "string");
// or for strongly typed views
Model.Callback = new Func<string>(() => "string");
ViewData[“callback”]=newfunc(()=>“string”);
//或用于强类型视图
Model.Callback=newfunc(()=>“字符串”);
鉴于

<%= ((Func<string>)ViewData["callback"])() %>
<%= Model.Callback() %>


但是你最好不要这样做。

如果你想在页面中插入一些文本,你可以在控制器上调用一个操作。您可以使用Html.RenderAction(,)。这将在视图中删除该字符串

这是一种从不同控制器填充视图部分的简单方法


或者,是否存在无法从生成视图的操作调用方法并将其放入ViewData/ViewBag的原因?然后,您可以在视图中访问它。

如果您想在页面中插入一些文本,可以在控制器上调用操作。您可以使用Html.RenderAction(,)。这将在视图中删除该字符串

这是一种从不同控制器填充视图部分的简单方法


或者,是否存在无法从生成视图的操作调用方法并将其放入ViewData/ViewBag的原因?然后可以在视图中访问它。

有时需要从视图中调用控制器的方法,例如,查看DevExpress gridview状态管理机制。为此

(ViewContext.Controller as MyController).SomeMethod();

是一个很好的解决方案。

有时需要从视图调用控制器的方法,例如,查看DevExpress gridview状态管理机制。为此

(ViewContext.Controller as MyController).SomeMethod();

这是一个很好的解决方案。

。控制器收集数据并将其传递给视图。视图不调用controllers.Upvoted。控制器收集数据并将其传递给视图。视图不调用控制器。正是我需要的正是我需要的