使用jquery对话框在mvc中执行表单提交和验证
嗨,我有一张表格和一张局部视图。部分视图表示文件上载内容,它包含文件名文本框和文件输入。表单上有一个按钮,单击该按钮时,它会使用“提交”和“取消”按钮将此部分视图加载到jquery对话框中。使用后单击submit按钮,它简单地称为$myform.submit。一切正常,但我希望执行mvc验证,如果文档名为空,我希望保持对话框仍然打开,并在ValidationSummary区域显示错误。有人能告诉我如何做到这一点吗 谢谢 这是我的jquery对话框代码使用jquery对话框在mvc中执行表单提交和验证,jquery,asp.net-mvc,Jquery,Asp.net Mvc,嗨,我有一张表格和一张局部视图。部分视图表示文件上载内容,它包含文件名文本框和文件输入。表单上有一个按钮,单击该按钮时,它会使用“提交”和“取消”按钮将此部分视图加载到jquery对话框中。使用后单击submit按钮,它简单地称为$myform.submit。一切正常,但我希望执行mvc验证,如果文档名为空,我希望保持对话框仍然打开,并在ValidationSummary区域显示错误。有人能告诉我如何做到这一点吗 谢谢 这是我的jquery对话框代码 submitDialog:functi
submitDialog:function(url,title,event,target,frm,onLoadCallBack){
event.preventDefault();
$url = url;
$title = title;
var $dialog = $(target);
$dialog.empty();
$dialog
.load($url,onLoadCallBack)
.dialog({
bgiframe: true,
title: $title,
height: 200,
width: 400,
modal: true,
autoOpen: false,
resizable: false,
});
$dialog
.dialog("option", "buttons", {
"Submit":function(){
var dlg = $(this);
var $frm = $(frm);
$frm.submit();
},
"Cancel": function() {
$(this).dialog("close");
$(this).empty();
}
});
$dialog.dialog('open');
}
这是我的部分观点
@model MVCWeb.Models.UploadDocBaseModel
@{
ViewBag.Title = "Document Upload";
}
<h3>Documents</h3>
@using (Html.BeginForm(MVC.Order.SaveOrderDoc(Model), FormMethod.Post, new { enctype = "multipart/form-data", Id = "frmDocUpload" } ))
{
@Html.ValidationSummary()
<fieldset>
<ol>
<li class="clearfix">
<label class="fixed-width-label medium">Document Name</label>
@Html.TextBox("docName", "", new { @class = "text-field medium" })
</li>
<li class="clearfix">
<label class="fixed-width-label medium">Upload</label>
<input type="file" id="docFile" name="fileUpload" />
</li>
</ol>
</fieldset>
}
文件上传输入将被jQuery读取为文本框输入,因此您可以
var filenamePath = ('#mytextboxinputforfile').val() // returns the filename in the textbox
if (filenamePath == '') {
// show error in validation summary. you can get this by looking at the
// page source to see what the validation summary id is and set the text.
}
我希望在提交事件上有一个回调。因为我的控制器将重新绑定视图,并且错误状态已经存在,因为我使用了数据注释,所以我只想重新显示它。这不是您最初要问的问题,为什么您在发布之前在jquery中进行验证,而只想以任何一种方式发布并显示错误?我能看看你的视图代码吗?你可能只需要在页面代码中添加这些内容,也许我解释得不太清楚。我希望在提交事件上有一个回调。因为我的控制器将重新绑定并返回部分视图,并且错误状态已经存在,所以我使用了数据注释,所以我想在对话框中重新显示它。现在,当我返回部分视图时,它将重新显示有错误的表单,但在新页面中,而不是在jquery对话框中,因此我丢失了整个页面内容。我将在问题中附加我的其余代码,因此您实际上必须进行$.ajax调用并以这种方式发送表单数据。在$.ajax调用的success函数中,您将得到响应,响应应该是HTML,并设置对话框的HTML。按照现在的方式,submit函数将调用回发到服务器,并像普通提交一样重新加载带有更改的页面。不,我不能,因为我正在上传文件,而不是简单的页面ajax post。bdparrish没有回答问题,有人能帮我吗?
var filenamePath = ('#mytextboxinputforfile').val() // returns the filename in the textbox
if (filenamePath == '') {
// show error in validation summary. you can get this by looking at the
// page source to see what the validation summary id is and set the text.
}