ASP.NET MVC新手求教.如何多个cshtml使用同一个ActionResult提供数据?

时间:2021-02-25 11:18:29
就是类似asp.net webform中的用户自定义空间ascx

在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变量

#4


传参你用RenderPage吧,例:
@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);
}

#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变量

#4


传参你用RenderPage吧,例:
@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);
}