使用jquery对话框在mvc中执行表单提交和验证

使用jquery对话框在mvc中执行表单提交和验证,jquery,asp.net-mvc,Jquery,Asp.net Mvc,嗨,我有一张表格和一张局部视图。部分视图表示文件上载内容,它包含文件名文本框和文件输入。表单上有一个按钮,单击该按钮时,它会使用“提交”和“取消”按钮将此部分视图加载到jquery对话框中。使用后单击submit按钮,它简单地称为$myform.submit。一切正常,但我希望执行mvc验证,如果文档名为空,我希望保持对话框仍然打开,并在ValidationSummary区域显示错误。有人能告诉我如何做到这一点吗 谢谢 这是我的jquery对话框代码 submitDialog:functi

嗨,我有一张表格和一张局部视图。部分视图表示文件上载内容,它包含文件名文本框和文件输入。表单上有一个按钮,单击该按钮时,它会使用“提交”和“取消”按钮将此部分视图加载到jquery对话框中。使用后单击submit按钮,它简单地称为$myform.submit。一切正常,但我希望执行mvc验证,如果文档名为空,我希望保持对话框仍然打开,并在ValidationSummary区域显示错误。有人能告诉我如何做到这一点吗

谢谢

这是我的jquery对话框代码

   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.
}