Mig*_*ura 8 asp.net-core asp.net-core-1.0 asp.net-core-2.0
在ASP.NET Core 2.0应用程序上,我需要渲染局部视图并传递一些参数:
@Html.Partial("Form", new { File = "file.pdf" })
Run Code Online (Sandbox Code Playgroud)
在部分视图中,我尝试使用以下方法访问它:
@Model.File
Run Code Online (Sandbox Code Playgroud)
我收到错误:
RuntimeBinderException: 'object' does not contain a definition for 'File'
Run Code Online (Sandbox Code Playgroud)
如果我只是使用我的部分:
@Model
Run Code Online (Sandbox Code Playgroud)
我在页面上打印了以下内容:
{ File = file.pdf }
Run Code Online (Sandbox Code Playgroud)
所以模型正在传递,其中有一个属性文件.
那我错过了什么?
Win*_*Win 16
您正在将无类型(匿名类型)数据传递给局部视图.你不能使用@Model.File.相反,您需要使用ViewData的Eval方法来检索值.
@ViewData.Eval("File")
Run Code Online (Sandbox Code Playgroud)
传统方法是创建强类型的ViewModel类,并将其传递给局部视图.然后你可以访问它@Model.File.
public class SampleViewModel
{
public string File { get; set; }
}
@Html.Partial("Form", new SampleViewModel { File = "file.pdf" })
Run Code Online (Sandbox Code Playgroud)
在局部视图内,
@model SampleViewModel
<h1>@Model.File</h1>
Run Code Online (Sandbox Code Playgroud)
您应该将dynamic其作为部分视图的模型,这样您就可以传递所有内容 - 就像您的匿名对象一样 - 并且它会正常工作。添加:
@model dynamic
Run Code Online (Sandbox Code Playgroud)
到 Form.cshtml 文件。
| 归档时间: |
|
| 查看次数: |
10530 次 |
| 最近记录: |