【发布时间】:2020-11-17 22:24:02
【问题描述】:
目前正在处理一个项目,我正在尽最大努力避免剃刀文件的代码块中出现任何 C#,因此我正在尝试遵循 MVVM 设计模式。我有一个测试视图模型,它只是试图从标签标记中获取一个字符串值。
视图模型
public class MyViewModel : NotifiableAndDisposableBase
{
[Parameter]
public string Text { get; set; }
}
MyCard 组件
@inject MyViewModel vm
<h3 style="color: white">MyCard</h3>
<h3 style="color: white">@vm.Text</h3>
查看
<div>
<MyCard Text="This is passed in"/>
</div>
现在,此代码将不起作用,标签调用中将无法识别 Text 参数。我可以让参数被识别和传递的唯一方法是如果我使用像这样的@Code块
@code{
[Parameter]
public string CodeBlockText {get; set;}
}
或
我的组件不是使用 [Inject] 我的 viewmodel 而是 [Inherits] 我的 viewmodel,但使用 Inherits 意味着我必须使用 Default 构造函数,但我需要使用在 StartUp.cs 中创建的持久 HttpClient
我想一种解决方法是在代码块中创建一个参数,然后在视图模型中设置实际属性,但我不确定这是否是一个好习惯。
任何建议将不胜感激。
【问题讨论】:
标签: .net mvvm blazor blazor-webassembly