我正在使用ASP.NET 5 RC1
_MyPartial
@model MyViewModel
<div class="panel panel-primary">
<div class="panel-body">
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true)
@Html.MyHtmlHelperRow(model => model.ShortDistrictName)
@Html.MyHtmlHelperRowSaveButton(model => model.Id)
</div>
}
</div>
</div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
cshtml
查看
@model MyViewModel
@{
ViewBag.Title = "Edit";
}
<h2>@ViewBag.Title</h2>
@Html.RenderPartialAsync("_MyPartial", Model)
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
行
@Html.RenderPartialAsync("_MyPartial", Model)
除了在html中渲染外,渲染
System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]
在部分页面呈现的最后一个内容正下方的html中的文本。
如果我将部分行引用更改为非异步
@Html.Partial("_MyPartial", Model)
然后我没有得到这个文本行。
问题:
为什么我在html
如何摆脱它仍然可以使用RenderPartialAsync?
答案 0 :(得分:23)
您需要使用await
来调用异步方法。 ASP.NET 5增加了在Razor中使用await
的功能:
@{await Html.RenderPartialAsync("_MyPartial", Model);}
答案 1 :(得分:8)
使用接受的答案中的语法给了我这个错误:
RC1中的参数1:无法从'void'转换为'object'
@await Html.RenderPartialAsync(“_ ProductList”,Model)
我不得不使用花括号和分号:
@{await Html.RenderPartialAsync("_ProductList", Model);}
RenderPartialAsync
直接写入响应并返回void(技术上为Task),视图编译器无法将其作为字符串打印。