加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将ViewBag作为参数传递

发布时间:2020-12-15 08:26:50 所属栏目:百科 来源:网络整理
导读:如果我在Dynamic ViewBag中有一个值,为什么我不能将它传递给方法?所以为简单起见,假设我有ViewBag.SomeValue,我想将ViewBag.SomeValue传递给 HTML Helper.如果 HTML帮助器接受dynamic作为变量,为什么它不接受我的ViewBag.SomeValue? @Html.SimpleHelper(Vi
如果我在Dynamic 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);
}

解决方法

正如错误消息所示,无法动态分派扩展方法.它在.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所说,你需要使用强类型视图模型,而不要使用ViewBag.这只是为什么不应该使用ViewBag的数百万个原因之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读