【发布时间】:2020-04-06 01:07:44
【问题描述】:
我有一个包含以下内容的 View MyView.cshtml:
@using MyProject.ViewModels
@model MyProject.ViewModels.MyViewViewModel
<form asp-action="Test" method="Post">
<component type="typeof(MyProject.Views.Home.Test)" render-mode="ServerPrerendered" />
<input type="submit" value="send"/>
</form>
我有 Razor 组件 Test.razor 具有以下内容(使用 Blazor 语法):
@page "/Test"
<div class="form-group top-buffer @Visible">
<div class="row">
<div class="col-2">
<label asp-for="TestName" class="control-label"></label>
</div>
<div class="col-3">
<input asp-for="TestName" class="form-control" />
<span asp-validation-for="TestName" class="text-danger"></span>
</div>
</div>
</div>
<button @onclick="Show">Show</button>
@code {
public string Visible { get; set; } = "hidden";
protected async Task Show()
{
Visible = "";
}
}
MyViewViewModel 类如下所示:
namespace MyProject.ViewModels
{
public class MyViewViewModel
{
[Display(Name = "Test Name:")]
public string TestName { get; set; }
}
}
到目前为止一切正常。但是,我现在想将此组件用作 Web 表单的一部分,该表单将在提交后发送到控制器。这就是为什么我需要访问和更改我的 ViewModel 'MyViewViewModel' 的属性。不幸的是,我在互联网上没有找到任何关于如何做到这一点的答案。我不能像在视图中那样使用@model MyProject.ViewModels.MyViewViewModel,因为这会给我一个编译错误。我想知道我是否需要使用@inject,但如果是,我不知道如何......
(此示例中使用的部分:https://jonhilton.net/use-blazor-in-existing-app/)
【问题讨论】:
-
这个剃须刀页面的 .cs 是什么样的。例如:MyViewModel 有什么作用
-
我更新了我的帖子。现在是否清楚我将尝试实现的目标?我的意思是我想避免使用 JS 并改用 C# Blazor。我明白我必须使用组件,但我不明白如何从这样的组件中读取和写入 ViewModel 中的属性。
-
我将尝试现场解决这个问题,并在完成后将解决方案发回此处。 twitter.com/EdCharbeneau/status/1205520278480203776
标签: asp.net-core-mvc viewmodel razor-pages blazor .net-core-3.1