返回视图(模型:MyModel);等效于 ASP.Net 核心剃刀页面



我希望在ASP Razor Pages中看到类似return Page(model: MyModel);的东西。 而不是 Page((; 没有参数。

所以我可以返回没有页面模型类的页面。

我不能使用TempData,因为MyModel是一个复杂的类型。

如何获得与 ASP MVCreturn View(model: MyModel);相同的功能

拜托,这个问题不是针对所有MVC开发人员,而是经验丰富的 ASP.Net 核心剃刀页面开发人员。 谢谢。

好的,这里有一个简单的餐厅应用程序的示例。 如您所见,餐厅对象是 DetailModel 中的一个属性。一旦我在 OnGet(( 方法中设置它。我可以在我的 Razor 页面视图中访问其数据。

public class DetailModel : PageModel
{
private readonly IRestaurantData restaurantData;
[TempData]
public string Message { get; set; }
public Restaurant Restaurant { get; set; }
public DetailModel(IRestaurantData restaurantData)
{
this.restaurantData = restaurantData;
}
public IActionResult OnGet(int restaurantId)
{
Restaurant = restaurantData.GetById(restaurantId);
if(Restaurant == null)
{
return RedirectToPage("./NotFound");
}
return Page();
}
}

以及页面中的视图。

@page "{restaurantId:int}"
@model MyProject.Pages.Restaurants.DetailModel
@{
ViewData["Title"] = "Detail";
}
<h2>@Model.Restaurant.Name</h2>
<div>
Id: @Model.Restaurant.Id
</div>
<div>
Location: @Model.Restaurant.Location
</div>
<div>
Cuisine: @Model.Restaurant.Cuisine
</div>
@if(Model.Message != null)
{
<div class="alert alert-info">@Model.Message</div>
}
<a asp-page="./List" class="btn btn-default">All Restaurants</a>

实际上,Razor 页面作为一个整体工作,因此您不必返回模型。您只需绑定它,您就可以在页面内访问。

这有意义吗? 另请阅读 DOCS 了解更多信息:https://learn.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-3.1&tabs=visual-studio