在视图组件或分部视图中使用表单
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>
我在没有 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>