我在理解如何在cshtml页面中操作模型数据时遇到了一些麻烦。我的大部分问题可能是由于没有完全理解如何/为什么使用lambda。
我想做的一件事,但无法做到:
(此代码无效)
@model Combined.Models.Task
<div>
@string x = model => model.fileString
@Html.TextBoxFor(model => model.files, new { @class = "form-control", type = "file", multiple = "true", placeholder = x})
</div>
model.files
是一种可以接受文件输入的数据类型,但在此上下文中将为空。
model.fileString
是我要加载到该文本框中的文件的字符串表示
修改
简化:
我想使用存储在model.fileString中的数据,但我似乎无法弄清楚如何访问它。当我尝试在表单中使用它时模型=&gt; model.fileString我得到错误
答案 0 :(得分:1)
我不确定你要做什么:)
至于第一部分:
如果您想将文件作为字符串输出,您可以通过几种方式进行输出,无论是否有lambda。
@Html.TextBoxFor(model => model.fileString)
<input type="text" value="@Model.fileString"/>
<p>@Model.fileString</p>
就文件提交而言,您需要一个输入类型文件和一个具有多部分编码的表单,不能使用文本框(仅用于文本)
<form method="POST" action="@Url.Action("SubmitFiles",)" enctype="multipart/form-data">
<input type="file" name="filePropertyName" />
<input type="submit" value="submitMyForm"/>
我认为你试图强制lambda由于For方法的自动名称生成(TextAreaFor,HiddenFor,...)
但是你可以像自己一样轻松地命名。例如,我的文件输入名称为filePropertyName。 Mvc模型绑定器将此名称与您的viewmodel的属性或post方法的参数匹配。