gpt4 book ai didi

c# - 文件上传导致模型验证失败

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:47 24 4
gpt4 key购买 nike

我有一个 MVC3 表单绑定(bind)到一个带有文件上传控件的模型。 (为简洁起见删除了额外的 HTML):

@model Models.MessageModel

<script type="text/javascript">
var numAttachments = 0;
$(function () {
$(".add-attachment").click(function () {
$(".attachments").append("<div><input type=\"file\" name=\"attachments\" id=\"attachment" + numAttachments + "\" /></div>");
});
});
</script>

@using (Html.BeginForm())
{
@Html.ValidationSummary()
<div class="field-label">Subject:
@Html.EditorFor(model => model.Subject)
</div>
<div class="attachments">
</div>
<div>
<a href="javascript:void(0);" class="add-attachment">Add Attachment</a>
</div>
<div class="message-text">@Html.TextAreaFor(model => model.Text, new { cols = 107, rows = 10 })</div>
<input type="submit" value="Send Message" />
</div>
}

用户可以通过点击“添加附件”链接选择添加多个附件,附件不是必须的。

我的模型如下:

public class MessageModel
{
[Required]
public string Subject { get; set; }

[Required]
public string Text { get; set; }

public IEnumerable<HttpPostedFileBase> Attachments { get; set; }
}

(注意:我也试过将附件从模型中移出,放入我的操作方法的参数中,结果相同)

我的行动:

[HttpPost]
public ActionResult New(MessageModel message)
{
// this check passes if no file is uploaded
// but once a file is uploaded, this evaluates to false
// even if the model is valid
if (ModelState.IsValid)
{
// do stuff
}
}

当没有选择要上传的文件时,此表单工作正常并且验证通过。当我选择要上传的文件时,ModelState.IsValid 变为 false。如何使验证忽略上传的文件?

最佳答案

您需要确保您的表单使用了正确的“enctype”。

@using (Html.BeginForm("New", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))

MVC 3 file upload and model binding

关于c# - 文件上传导致模型验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com