在webform中创建一个ascx控件,会有后台方法提供数据。那么网站上线后我复制几个ascx都能正常调用,
<%@ Register TagPrefix="Gp" TagName="Header" Src="Control/Top.ascx" %>
<%@ Register TagPrefix="Gp" TagName="Header" Src="Control/Top1.ascx" %>
<%@ Register TagPrefix="Gp" TagName="Header" Src="Control/Top2.ascx" %>
这3个ascx其实用的都是一个后台UserControl 方法也就是 Inherits 一样。
MVC如何做到这一点呢?
我现在只能用笨方法。
后台
public class TestData
{
public static List<string> Test()
{
List<string> a=new List<string>{"a","b","c","1","2","3"};
return a;
}
}
cshtml里用
@foreach (var t in TestData.Test())
{
@t
<br>
}
来进行多个cshtml使用同一数据源..不知道MVC中有没有类似webform中使用ascx的方法?
分部视图好像 一个ActionResult只能对应一个cshtml。进行调用.
6 个解决方案
#1
例:
[HttpGet]
public ActionResult Top()
{
return View("~/Views/Html/Partial/_TopPartial.cshtml");
}
@Html.Action("Top", "Html")
#2
用Html.Partial 、Html.RenderPartial、Html.Action 、Html.RenderAction 也都可实现!
#3
那能不能这样?
public ActionResult Top(string path)
{
var Model=new{dd="ss"};
return View(path,Model);
}
这种方式,视图里怎么调用呢?就是传入path变量
public ActionResult Top(string path)
{
var Model=new{dd="ss"};
return View(path,Model);
}
这种方式,视图里怎么调用呢?就是传入path变量
#4
传参你用RenderPage吧,例:
@RenderPage("~/Views/Partial/_TopPartial.cshtml", new { param = "abc", param2 = "def"})
接收参数:if (@PageData["param"] == "abc"){…}
@RenderPage("~/Views/Partial/_TopPartial.cshtml", new { param = "abc", param2 = "def"})
接收参数:if (@PageData["param"] == "abc"){…}
#5
这样的话还是得在父页面提前读好数据。诶。
#6
Html.RenderPartial("top");在主页中引用返回部分视图,跟用户控件一样的
public PartialResult top()
{
var Model=new{dd="ss"};
return View(Model);
}
public PartialResult top()
{
var Model=new{dd="ss"};
return View(Model);
}
#1
例:
[HttpGet]
public ActionResult Top()
{
return View("~/Views/Html/Partial/_TopPartial.cshtml");
}
@Html.Action("Top", "Html")
#2
用Html.Partial 、Html.RenderPartial、Html.Action 、Html.RenderAction 也都可实现!
#3
那能不能这样?
public ActionResult Top(string path)
{
var Model=new{dd="ss"};
return View(path,Model);
}
这种方式,视图里怎么调用呢?就是传入path变量
public ActionResult Top(string path)
{
var Model=new{dd="ss"};
return View(path,Model);
}
这种方式,视图里怎么调用呢?就是传入path变量
#4
传参你用RenderPage吧,例:
@RenderPage("~/Views/Partial/_TopPartial.cshtml", new { param = "abc", param2 = "def"})
接收参数:if (@PageData["param"] == "abc"){…}
@RenderPage("~/Views/Partial/_TopPartial.cshtml", new { param = "abc", param2 = "def"})
接收参数:if (@PageData["param"] == "abc"){…}
#5
这样的话还是得在父页面提前读好数据。诶。
#6
Html.RenderPartial("top");在主页中引用返回部分视图,跟用户控件一样的
public PartialResult top()
{
var Model=new{dd="ss"};
return View(Model);
}
public PartialResult top()
{
var Model=new{dd="ss"};
return View(Model);
}