问题描述
我将 .net 核心框架与没有 MVC 的 razor 页面一起使用,我正在尝试将表单与视图组件集成以使其可重用。
问题是我注意到它不是真的。实际上,我使用了表单的 asp-for 属性,该属性实际上基于父 PageModel,其中我绑定了与表单字段相对应的属性。
我想知道如何创建包含要在最终 PageModel 中使用的表单的可重用组件。
谢谢:)
解决方法
如果你想让你的局部视图可重用,这意味着应该只调用一个模型。
您想使用局部视图,并从不同模型中获取数据吗?
然后您可以使用 ViewModel 来包含多个不同的模型,例如:
public class MyViewModel
{
public Profile Profile { get; set; }
public Job Job { get; set; }
}
public class Profile
{
public string Name { get; set; }
}
//....other models
Index.cshtml.cs:
[BindProperty]
public MyViewModel MyViewModel { get; set; }
public void OnGet()
{
MyViewModel = new MyViewModel
{
Job = new Job { Name = "teacher" },Profile=new Profile {Name="Peter"}
};
}
Index.cshtml(model= 用于将模型传递给部分):
<partial name="~/Pages/Shared/Partialview.cshtml" model="Model.MyViewModel" />
然后可以在Partial视图中获取相关的模型数据:
@model tr4cks491.Models.MyViewModel
<form method="post">
<input asp-for="Job.Name" />
<input asp-for="Profile.Name" />
<input type="submit" value="Submit" />
</form>