gpt4 book ai didi

c# - Razor 中的嵌套 Html.Action 调用

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:47 25 4
gpt4 key购买 nike

编辑:显然这是我网站的一个大大简化的版本,如果我制作一个测试应用程序,使用这种模式它工作正常。在我们真正的应用程序中,我们使用的是 T4MVC,这都在一个区域内。我猜是这些因素之一导致了我的问题...

EDIT2:所有默认路由都已定义,如果我直接导​​航到/AreaName/ControllerName/SubChild?val=123 它会呈现。

我有一个 Mvc 的特殊问题,希望有人能提供帮助...

我有一个具有以下操作方法的 Controller

public ActionResult Index()
{
return View(GetModel());
}

public ActionResult Result Child(string blah)
{
return View(GetModel(blah));
}

public ActionResult Result SubChild(int val)
{
return View(GetModel(val));
}

然后我有 3 个 Razor View 。

索引.cshtml

<div>
@Html.Action("Child", new { blah = "raaa"})
</div>

Child.cshtml

    <div>
@*ERROR HERE*@
@Html.Action("SubChild", new { val = 123})
</div>

SubChild.cshtml

<h1>@Model.val</h1>

当我导航到/我得到一个异常抛出说“路由表中没有路由与提供的值匹配。”在调用 SubChild 操作的 Html.Action 上。

这一切都在同一个区域和同一个 Controller 内。如果我更改标记并使用 Html.Partial 调用 subview (并构建模型并将其传递到 View 中),它会呈现良好。当我在已使用 Html.Action 呈现的 View 中调用 Html.Action 时,问题就出现了。

我已经尝试使用/area/controller/action,在 Html.Action 调用中指定 Controller ,将区域作为参数传递到路由值和所有这些的组合中。

有人知道这可能是什么吗?我假设您可以在使用它呈现的 View 中调用 Html.Action,我想我可能是错的...

最佳答案

嗯,开箱即用的 MVC 3 具有名为 id 的默认路由参数。您的 SubChild 操作有一个名为 val 的参数,所以这可能是问题所在。

要么将Action中的参数重命名为id,要么添加一个新路由

routes.MapRoute(
"SubChild",
"{controller}/SubChild/{val}",
new
{
controller = "ControllerName",
action = "SubChild",
val = UrlParameter.Optional
}
);

关于c# - Razor 中的嵌套 Html.Action 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com