在我的代码中,我有@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
,为什么?
答案 0 :(得分:17)
是的,我们应该, 请参见其官方网站的以下部分
从HTML帮助器迁移
请考虑以下异步HTML Helper示例。迭代并显示产品集合。根据PartialAsync方法的第一个参数,将加载_ProductPartial.cshtml部分视图。产品模型的实例传递到局部视图进行绑定。
CSHTML
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
以下Partial Tag Helper实现了与PartialAsync HTML Helper相同的异步呈现行为。为模型属性分配了一个产品模型实例,用于绑定到局部视图。
CSHTML
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="product" />
}
答案 1 :(得分:4)
@niico,回应您对
的评论
<partial>
标签助手在哪里适合?
根据我从文档和github中可以找到的信息,看来您应该使用@Html.PartialAsync()
或<partial name="_Post" />
代替 { {1}}。但是@Html.Partial()
元素似乎不适用于我的.NET CORE 版本,该版本已于今天(8/23/18)
请参阅:
https://firebase.google.com/docs/cloud-messaging/concept-options
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-2.1
答案 2 :(得分:1)
我不知道你的代码,但我认为这个应该回答你的问题: 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):
也是页面上的注释。
If your views need to execute code, the recommended pattern is to use a view component instead of a partial view.
所以你应该使用Partial并避免使用PartialAsync,如果你发现自己使用了PartialAsync,你应该问自己是否做错了,也许你应该使用ViewComponent,或者将逻辑从视图移动到控制器
答案 3 :(得分:0)
您可以在MVC项目中尝试使用此方法来“警告MVC1000使用IHtmlHelper.Partial”。
<partial name="~/Views/Folder/_PartialName.cshtml" />
<partial name="/Views/Folder/_PartialName.cshtml" />
答案 4 :(得分:-1)
从ASP.NET Core 2.1开始...使用@await Html.PartialAsync()
代替@Html.Partial()