在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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top