要将参数传递给不在ViewData中的MVC用户控件,您可以使用以下方法:
ViewBag是一个动态对象,它允许您在控制器和视图之间传递参数。在控制器中,您可以将参数放入ViewBag中,然后在视图中访问它们。
在控制器中:
public ActionResult Index()
{
ViewBag.Message = "Hello, World!";
return View();
}
在视图中:
<h1>@ViewBag.Message</h1>
ViewModel是一种将数据从控制器传递到视图的模式。您可以创建一个包含所需属性的ViewModel类,并将其作为参数传递给视图。
ViewModel示例:
public class MyViewModel
{
public string Message { get; set; }
}
在控制器中:
public ActionResult Index()
{
var model = new MyViewModel { Message = "Hello, World!" };
return View(model);
}
在视图中:
<h1>@Model.Message</h1>
TempData是一个临时数据存储,它在多个请求之间存储数据。您可以在控制器中将数据存储在TempData中,然后在视图中访问它。
在控制器中:
public ActionResult Index()
{
TempData["Message"] = "Hello, World!";
return View();
}
在视图中:
<h1>@TempData["Message"]</h1>
ViewComponent是一种可重用的UI组件,它可以在视图中呈现数据。您可以创建一个ViewComponent,将参数传递给它,然后在视图中调用它。
创建一个名为“MyViewComponent”的ViewComponent:
public class MyViewComponent : ViewComponent
{
public IViewComponentResult Invoke(string message)
{
return View("Default", message);
}
}
在视图中调用ViewComponent:
<h1>@await Component.InvokeAsync("MyViewComponent", new { message = "Hello, World!" })</h1>
这些方法中的任何一种都可以将参数传递给不在ViewData中的MVC用户控件。
领取专属 10元无门槛券
手把手带您无忧上云