如何派遣上submiting在ASP.Net MVC的AJAX形式的结果呢?
-
06-09-2019 - |
题
在ASP.Net MVC中,具有形式或多或少是这样的:
<% using (Ajax.BeginForm(new AjaxOptions() { OnSuccess="onSuccess"})) {%>
<p>
<label for="Comment">Comment:</label>
<%= Html.TextArea("Comment")%>
<%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>
<% } %>
在的onSuccess Javascript函数怎么能知道结果是否为形式的另一个版本,因为它不验证,作为一个div注释添加到的评论列表或一个登录页面,应该是弹出的日志在?
没有正确的解决方案
其他提示
您可以定义在返回JSON或无论您使用的运输方式?
不知道这就是你要找什么,也:这是的onSuccess函数是如何调用:
YourFunction(ajaxContext);
AjaxContext定义如下:
AjaxContext ajaxContext = new AjaxContext(request, updateElement, loadingElement, ajaxOptions.InsertionMode);
您应该更换新的局部视图您的Ajax表单中的代码,那么你将返回从控制器局部视图。局部视图将包括在:
<p>
<label for="Comment">Comment:</label>
<%= Html.TextArea("Comment")%>
<%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>
这样,你的部分观点的作品就像一个普通视图。 不幸的是,执行JavaScript作为响应(因为你是一个视图响应)没有简单的方法。这将是更容易,如果你的反应是一个JSON字符串,但在这种情况下,你不能使用给ajaxForm因为JSON字符串会在屏幕上呈现为提交表单(并处理其响应)的结果。这可以工作,虽然(I还没有尝试过):
<p>
<label for="Comment">Comment:</label>
<%= Html.TextArea("Comment")%>
<%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>
<script type="text/javascript">
function processResponse(data){
// blah blah blah
}
processResponse(<%= ViewData["dataFromTheController"] %>);
</script>
您可以简单地不同CSS类您的回答的根元素(例如.FORM,。点评和.login)添加。然后(例如,在jQuery的):
var response = $(responseContent);
$('.form', response).each(function() {
// $(this) is form
});
$('.comments', response).each(function() {
// $(this) is comments
});
$('.login', response).each(function() {
// $(this) is login page
});
如何能的onSuccess的Javascript 功能知道结果是否 因为它形式的另一个版本 未得到验证,作为一个div来评论 添加的注释或日志列表 在页面应该弹出的 在登录?
在简短的答案是不能,除非你明确地验证。这是因为JSON运输为一个字符串,当客户端Javascript得到的字符串。
对于初学者来说,你应该知道含蓄什么样的对象的期望。如果你调用一个Web服务@ Cars/List
那么你知道返回的对象将是汽车的列表,你适当地分析你的客户端。可以遇到错误,你应该通过重试适当地处理该请求或记录它们或显示错误信息。
我会建议您使用 jquery.form插件,与此可以有一个正常的形式表现得像一个Ajax一个,如下所示:
<script type="text/javascript">
// wait for the DOM to be loaded
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#myForm').ajaxForm(function() {
alert("Thank you for your comment!");
});
});
</script>
<form id="myForm" action="comment.php" method="post">
Name: <input type="text" name="name" />
Comment: <textarea name="comment"></textarea>
<input type="submit" value="Submit Comment" />
</form>