我有一个asp.net mvc应用程序。其中一个控制器调用 aspx 页面而不是普通的剃刀视图页面。我跟着这个https://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx 现在的问题是我需要从我的控制器发送一些数据到aspx页面,我无法使用 Viewbag 。
任何想法如何将数据从常规控制器发送到我的aspx页面?
答案 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"];
就是这样!