Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ajax中向控制器发送表单_Ajax_Asp.net Mvc_Asp.net Mvc 3_Jquery - Fatal编程技术网

在ajax中向控制器发送表单

在ajax中向控制器发送表单,ajax,asp.net-mvc,asp.net-mvc-3,jquery,Ajax,Asp.net Mvc,Asp.net Mvc 3,Jquery,这是我的表格 <form id="postProblemForm" action="/Problems/Post" method="post" enctype="multipart/form-data"> <input type="text" id="problemSubject" name="problemSubject" class="inp-form"/> <input type="file" id="uplo

这是我的表格

<form id="postProblemForm" action="/Problems/Post"  method="post" enctype="multipart/form-data">
            <input type="text" id="problemSubject" name="problemSubject" class="inp-form"/>
            <input type="file" id="uploadFile" name="uploadFile"/>
            <textarea rows="" cols="" class="form-textarea" id="problemDescription" name="problemDescription"></textarea>
            <input type="submit" value="Post" id="btnPostProblem"  style="width:70px;"/>

    </form>
以下是控制器代码

[HttpPost]
        public bool Post(FormCollection form) 
        {
            string subject = form["problemSubject"];
            string description = form["problemDescription"];
            var image = WebImage.GetImageFromRequest();

            return true;

        }

但未调用控制器方法。请参阅帮助。

您正在接受
POST
请求的控制器方法上执行
GET
。您需要将其更改为:

$.post(url,dataToSend,callBack);

不能使用AJAX上载文件。我看到您的表单包含一个文件输入,但这不适用于AJAX。此外,您正在使用
$。获取
,而您可能希望
$。发布
内容。操作的另一个问题是它应该返回ActionResult,而不是布尔类型。例如,您可以为tat问题返回一个JsonResult

如果您希望能够使用表单上载文件,可以使用客户端上载插件,如或

下面是使用jQuery.form插件时代码的示例:

$('#postProblemForm').ajaxForm(function(isPosted) {
    if (isPosted) { 
        alert('posted successfully');
    }
});

好的,很好。但我需要客户端验证,然后必须将表单发送给控制器。应该做什么?客户端验证与AJAX完全无关。这是两个不同的概念。您可以很好地启用客户端验证,并且仍然将表单作为常规表单提交。例如,假设您希望
problemSubject
字段为必填字段。只需使用
[Required]
属性修饰视图模型的属性,然后使用助手生成字段,而不是像您那样硬编码:
@Html.EditorFor(x=>x.ProblemSubject)
。然后包括相应的验证占位符:
@Html.ValidationMessageFor(x=>x.ProblemSubject)
。。。。最后包括
jquery.validate.js
jquery.validate.unobtrusive.js
脚本。
$('#postProblemForm').ajaxForm(function(isPosted) {
    if (isPosted) { 
        alert('posted successfully');
    }
});