這當然是可能的。您可以使用iframe
在ASP.NET MVC應用程序中託管舊版WebForm。讓我們假設,例如,你有以下的ASP.NET MVC控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.ValueFromMvc = "this value is coming from MVC";
return View();
}
public ActionResult Back(string valueFromWebForms)
{
return Content(string.Format("This value came from WebForms: {0}", valueFromWebForms));
}
}
與相應~/Views/Home/Index.cshtml
觀點:
<iframe src="@Url.Content("~/webform1.aspx?value_from_mvc=") + @Url.Encode(ViewBag.ValueFromMvc)"></iframe>
及以下~/WebForm1.aspx
:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
label.Text = Request["value_from_mvc"];
}
}
protected void Link_Click(object sender, EventArgs e)
{
var httpContext = new HttpContextWrapper(Context);
var requestContext = new RequestContext(httpContext, new RouteData());
var urlHelper = new UrlHelper(requestContext, RouteTable.Routes);
Response.Redirect(
urlHelper.Action(
"Back",
"Home",
new { valuefromwebforms = "coming from WebForm1.aspx" }
)
);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="label" runat="server" />
<br/>
<asp:LinkButton
runat="server"
ID="link"
OnClick="Link_Click"
OnClientClick="document.forms[0].target='_top';"
Text="Click here to send a value back"
/>
</form>
</body>
</html>
在這個例子中我認爲WebForm是MVC應用程序的一部分,它允許我們使用助手來生成它們之間的鏈接。當然,如果不是這種情況,你必須使用絕對URL來鏈接2個應用程序。
你是否意味着將數據從.aspx頁面發送到mvc頁面(操作方法)? – Nwafor