在视图组件或分部视图中使用表单

Use a form in a view component or a partial view

我在没有 MVC 的情况下使用带有 razor 页面的 .net 核心框架,我正在尝试将表单与视图组件集成以使其可重用。

问题是我注意到它并不是真正适合的。事实上,我使用了表单的 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=用于将model传给partial):

<partial name="~/Pages/Shared/Partialview.cshtml" model="Model.MyViewModel" />

然后就可以在局部视图中获取到相关的模型数据:

@model tr4cks491.Models.MyViewModel
<form method="post">
    <input asp-for="Job.Name" />
    <input asp-for="Profile.Name" />
    <input type="submit" value="Submit" />
</form>