将数据从Controller传递到Webform页面

时间:2018-02-13 06:59:41

标签: asp.net-mvc webforms

我有一个asp.net mvc应用程序。其中一个控制器调用 aspx 页面而不是普通的剃刀视图页面。我跟着这个https://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx 现在的问题是我需要从我的控制器发送一些数据到aspx页面,我无法使用 Viewbag

任何想法如何将数据从常规控制器发送到我的aspx页面?

3 个答案:

答案 0 :(得分:1)

使用model将数据从view(aspx engine)传递给controller

<强>型号:

public class Product  
{  
    public string ProductID { get; set; }  
    public string  ProductName { get; set; }  
    public int Quantity { get; set; }           
    public int Price {get; set;}
}

<强>控制器:

public ActionResult Index()  
{  
    List<Product> productLst = new List<Product>{
        new Product{ProductID="P01",ProductName="Pen",Quantity=10,Price=12},
        new Product{ProductID="P02",ProductName="Copy",Quantity=12,Price=20},
        new Product{ProductID="P03",ProductName="Pencil",Quantity=15,Price=22},
        new Product{ProductID="P04",ProductName="Eraser",Quantity=20,Price=27}        
    ViewData["Message"] = "Your message comes here"; 
    return View();  
}

ASPX查看:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Product>" %>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Index</title>
</head>
<body>
    <div>
        <h3>Passing Data From Controller To View using ViewData</h3>
        <h3><%= Html.Encode(ViewData["Message"]) %></h3>             
        <%foreach (var item in Model)
        {  %>
            <p><%=item.ProductID %></p>
            <p><%=item.ProductName %></p>
            <p><%=item.Quantity %></p>
            <p><%=item.Price %></p>
        <%} %>        
    </div>
</body>
</html>

aspx引擎中的模型绑定参考,

为任何HTML标记分配动态HTML属性:

<input checked="@isRazor" type="checkbox"><!-- Razor engine -->
<input checked="<%:isASPX%>" type="checkbox"><!-- ASPX engine -->

您可以使用Razor和ASPX View Engine进行更多HTML标记混合,以下代码块显示了如何实现这一点。

Your Sample Html Code or Text @RazorCode (@AnotherRazorCode)

Your Sample Html Code or Text <%: ASPXCode %> (<%:AnotherASPXCode %>)

答案 1 :(得分:1)

除此之外,您可以创建自己的自定义模型,将数据从Controller传递到View。

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<YourModel>" %>

<% foreach(var item in Model) { %>
<tr>
    <td><%: item.Name %></td>
</tr>

答案 2 :(得分:0)

您是否尝试过将其传递给ViewData,就像这样?

行动中的

ViewData["myvar"] = "realvalue";

视图中的

string parl = ViewData["myvar"];

注意:另外,您可以像这个例子一样使用Session

在MVC行动中:

Session["UserName"] = "Test";
WebForms中的

string UserName = (string)Session["UserName"];

就是这样!