gpt4 book ai didi

c# - 将 ViewBag 作为参数传递

转载 作者:太空狗 更新时间:2023-10-29 21:10:11 25 4
gpt4 key购买 nike

如果我在动态 ViewBag 中有一个值,为什么我不能将它传递给方法?因此,为简单起见,假设我有 ViewBag.SomeValue,并且我想将 ViewBag.SomeValue 传递给 HTML Helper。如果 HTML 助手接受 dynamic 作为变量,为什么它不接受我的 ViewBag.SomeValue

@Html.SimpleHelper(ViewBag.SomeValue)

public static string SimpleHelper(this HtmlHelper html, dynamic dynamicString)
{
return string.Format("This is my dynamic string: {0}", dynamicString);
}

最佳答案

正如错误消息告诉您的那样,扩展方法无法动态分派(dispatch)。它只是在 .NET 中不受支持。它与 ASP.NET MVC 或 Razor 无关。尝试为某种采用动态参数的类型编写扩展方法,然后尝试调用此扩展方法并将其传递给动态变量,您将收到编译时错误。

考虑以下说明这一点的控制台应用程序示例:

public static class Extensions
{
public static void Foo(this object o, dynamic x)
{
}
}

class Program
{
static void Main()
{
dynamic x = "abc";
new object().Foo(x); // Compile time error here
}
}

所以你需要转换:

@Html.SimpleHelper((string)ViewBag.SomeValue)

实际上,正如 Adam 所说,您需要使用强类型 View 模型并且永远不要使用 ViewBag。这只是不应使用 ViewBag 的数百万个原因之一。

关于c# - 将 ViewBag 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426962/

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