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

问题描述

我将 .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>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...