我认为这将是直截了当的,但我设法把它搞砸了.如果我想将URL参数传递给另一个操作,我是否必须为此创建新路由?
调节器
[ChildActionOnly]
public ActionResult ContentSection(string sectionAlias, string mvcController, string mvcAction = null)
Run Code Online (Sandbox Code Playgroud)
视图
@Html.RenderAction("ContentSection", "Portal", new {sectionAlias = "TermsAndConditions", mvcController = "Portal", mvcAction = "ChoosePayment"})
Run Code Online (Sandbox Code Playgroud)
错误
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Run Code Online (Sandbox Code Playgroud)
Nat*_*son 39
这里的问题是
@Html.RenderAction("ContentSection", "Portal", new {sectionAlias = "TermsAndConditions", mvcController = "Portal", mvcAction = "ChoosePayment"})
Run Code Online (Sandbox Code Playgroud)
相当于
<%= Html.RenderAction("ContentSection", "Portal", new {sectionAlias = "TermsAndConditions", mvcController = "Portal", mvcAction = "ChoosePayment"}) %>
Run Code Online (Sandbox Code Playgroud)
在Webforms ViewEngine(也是同一个Response.Write).RenderAction回归以来void,你不能Response.Write.你想要做的是:
@{
Html.RenderAction("ContentSection", "Portal", new {sectionAlias = "TermsAndConditions", mvcController = "Portal", mvcAction = "ChoosePayment"});
}
Run Code Online (Sandbox Code Playgroud)
该@{ }语法表示在Razor视图发动机代码块,以下面的所述Web表单这将是等效ViewEngine:
<% Html.RenderAction("ContentSection", "Portal", new {sectionAlias = "TermsAndConditions", mvcController = "Portal", mvcAction = "ChoosePayment"}); %>
Run Code Online (Sandbox Code Playgroud)
Oli*_*ver 12
简短的回答是:使用@ Html.Action().
@Html.Action("ContentSection", "Portal", new {sectionAlias = "Terms", ...})
Run Code Online (Sandbox Code Playgroud)
该长的答案已经由Nathan安德森给出.
这个答案的PS Credit真的归于詹姆斯·奈尔(James Nail),后者在内森的回答中将其作为评论发表,但我发现它非常简单和有价值,我认为应该是个人答案.
| 归档时间: |
|
| 查看次数: |
59463 次 |
| 最近记录: |