DiP*_*Pix 23 c# razor .net-core
在我的代码我有,@Html.Partial("_StatusMessage", Model.StatusMessage)但Visual Studio警告我:Error MVC1000: Use of IHtmlHelper.Partial may result in application deadlocks. Consider using <partial> Tag Helper or IHtmlHelper.PartialAsync.
我应该禁用此错误,还是应该@Html.Partial改为@Html.PartialAsync,为什么?
MrN*_*ams 24
是的,我们应该从他们的官方网站上看到以下部分
从HTML帮助程序迁移
请考虑以下异步HTML Helper示例.迭代并显示产品集合.根据PartialAsync方法的第一个参数,加载_ProductPartial.cshtml局部视图.Product模型的实例将传递到部分视图以进行绑定.
CSHTML
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
Run Code Online (Sandbox Code Playgroud)
以下部分标记帮助程序实现了与PartialAsync HTML Helper相同的异步呈现行为.为model属性分配了一个Product模型实例,用于绑定到局部视图.
CSHTML
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="product" />
}
Run Code Online (Sandbox Code Playgroud)
@niico,回应您的评论
<partial>标签助手在哪里适合?
根据我能够从文档和github中找到的内容,您似乎应该使用@Html.PartialAsync()或 <partial name="_Post" /> Inplace Of @Html.Partial()。但是,该<partial name="" />元素似乎在我的.NET CORE版本上不起作用,该版本截至今天(8/23/18)
请参见:
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/partial?view=aspnetcore-2.1
https://github.com/IdentityServer/IdentityServer4/pull/2344
从 ASP.NET Core 2.1 开始......使用@await Html.PartialAsync()而不是 @Html.Partial()
我不知道你的代码,但我认为这个应该回答你的问题: When to use @await Html.PartialAsync in a View in MVC 6
根据有关部分视图的 ASP.NET MVC 文档。https://docs.asp.net/en/latest/mvc/views/partial.html
The PartialAsync method is available for partial views containing asynchronous code (although code in views is generally discouraged):
Run Code Online (Sandbox Code Playgroud)
还有页面上的注释。
If your views need to execute code, the recommended pattern is to use a view component instead of a partial view.
Run Code Online (Sandbox Code Playgroud)
因此,您应该使用 Partial 并避免 PartialAsync,如果您发现自己使用 PartialAsync,您应该问问自己是否做错了什么,也许您应该使用 ViewComponent 来代替,或者将逻辑从视图移动到控制器。
| 归档时间: |
|
| 查看次数: |
11581 次 |
| 最近记录: |