【问题标题】:How to pass a value from ASP.NET MVC controller to ASP.NET webforms control inside MVC View?如何将值从 ASP.NET MVC 控制器传递到 MVC 视图内的 ASP.NET Webforms 控件?
【发布时间】:2010-12-24 15:46:18
【问题描述】:

我的 ASP.NET MVC 方法不是跨 ASP.NET Web 窗体,所以我很难理解如何更好地将值从 ASP.NET MVC 控制器传递到 MVC 视图内的 ASP.NET Webforms 脚本。

例如控制器动作:

 public ViewResult Print(string id)
    {
       ...
       string myvar = "realvalue"; 
       return View();
    }   

我的看法:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
...
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <script runat="server">
      ...  
     string par1 = "stubvalue";

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        ReportViewer1.Report = new MyProj.Web.Reports.Rep1(par1);
    }
    </script>
<telerik:ReportViewer runat="server" ID="ReportViewer1" />
</asp:Content>

如何将控制器操作中的myvar 值分配给视图中的par1 变量而不是“存根值”?

【问题讨论】:

    标签: c# asp.net asp.net-mvc telerik-reporting


    【解决方案1】:

    将 setter 调用移至 onload 事件

    受保护的覆盖无效 OnLoad(EventArgs e) { base.OnLoad(e); string par1 = (string) ViewData["myvar"]; ReportViewer1.Report = new MyProj.Web.Reports.Rep1(par1); }

    【讨论】:

      【解决方案2】:

      您是否尝试过像这样通过 ViewData 传递它?

      在行动中: ViewData["myvar"] = "realvalue";

      在视图中: string parl = ViewData["myvar"];

      【讨论】:

      • 这样我得到一个编译错误:编译器错误消息:CS0120:非静态字段、方法或属性'System.Web.Mvc.ViewPage.ViewData.get'
      • 您的方法适用于建议的更正@user6130。谢谢,+1
      【解决方案3】:

      我会 iframe 在 webform 位中而不是直接包含它——根据组件的不同,它可能会以多种方式中断。然后您可以将值传递给查询字符串。

      【讨论】:

        猜你喜欢
        • 2014-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多