【发布时间】:2010-01-27 22:30:09
【问题描述】:
我正在建立一个征文比赛页面。文章可以写入文本区域或上传。我是 asp.net mvc 的新手,并且一直在关注 Sanderson 的 Pro ASP.NET MVC 框架。
由于字段验证失败,我无法在往返过程中维护已发布的文件。
阅读this 我将输入文件命名为与模型字段名称相同,并将其作为输入传递给控制器操作:
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult SubmitEssay(Essay essay, bool acceptsTerms,
HttpPostedFileBase essay_filepath,
HttpPostedFileBase budget_filepath)
{
if (!acceptsTerms)
ModelState.AddModelError("acceptsTerms",
"You must accept the terms and conditions.");
else
{
try
{
// stuff uploaded file values
if (string.IsNullOrEmpty(essay.essay_filepath)
&& (essay_filepath!= null))
{
essay.essay_filepath = essay_filepath.FileName;
}
if (string.IsNullOrEmpty(essay.budget_filepath)
&& (budget_filepath != null))
{
essay.budget_filepath = budget_filepath.FileName;
}
这本身是有效的,但是当我去验证其他字段时,文件上传字段在往返时不再包含上传路径,这样当我重新提交时,填写必填字段后,没有发布的文件。
通过往返维护已发布文件的最佳方式是什么?您甚至可以设置 字段的“值”吗?我应该使用两个字段(一个隐藏)并使用 jQuery 设置文件输入字段吗?
其他人做了什么?
谢谢。
【问题讨论】:
-
是的,我想我应该只添加一条说明存在错误的注释,因此需要再次选择输入文件。
-
并且可能会添加一些客户端 JS 验证器以防止提交,除非所有必填字段都已填写..
-
是的,我实际上是在设置业务层保护之后才这样做的。我昨晚读到了关于下一个版本的 asp.net mvc 将如何允许使用相同的代码行进行业务层和 javascript 验证。 (也许现在这也是可能的,只是我对此了解不够。)
标签: asp.net-mvc