在Razor MVC 4中使用lambdas的正确方法

时间:2014-07-31 13:17:47

标签: c# asp.net asp.net-mvc-4 razor lambda

我在理解如何在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我得到错误

1 个答案:

答案 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方法的参数匹配。